Elasticsearch .net client NEST 空字符/null值查询

null值查询

当某个字段值为null时,其实在es里该条数据是没有这个字段的。查询时检测包含不包含该字段就行。

/// <summary>
        /// null 值查询
        /// 当数据为Null时字段不存在
        /// </summary>
        /// <param name="indexName"></param>
        public void NullValueQuery(string indexName)
        {
            var result = _client.Search<TestModel5>(
               s => s
                   .Index(indexName)//索引
                   .Type(typeof(TestModel5))//类型
                    //fd.Name必须存在  即:fd.Name!=null
                   .Query(q=>q.Bool(b=>b.Must(mt=>mt.Exists(ex=>ex.Field(fd=>fd.Name))))
                   ));
            
        }

 空字符查询

当某个字段值为空字符时(""),字段是存在的。

/// <summary>
        /// 空字符查询
        /// </summary>
        /// <param name="indexName"></param>
        public void StringEmptyQuery(string indexName)
        {
            var result = _client.Search<TestModel5>(
              s => s
                  .Index(indexName)//索引
                  .Type(typeof(TestModel5))//类型
                   //.Verbatim()如果不加该查询条件无效
                  .Query(q => q.Bool(b => b.Must(mt => mt.Term(ex => ex.Verbatim().Field(fd => fd.Name).Value(""))))
                  ));
        }

感谢群友的普及。

如果你也在用NEST 不妨一起来交流学习吧。^.^

Elasticsearch.Net、NEST 交流群:523061899

 

posted @ 2018-09-21 10:07  Mr. Hu  阅读(2238)  评论(0编辑  收藏  举报
Map