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))//类型
          .Query(q => q.Bool(b => b.Must(mt => mt.Term(ex =>
                                                        //.Verbatim()如果不加 那么这个term会被优化掉
                                                        ex.Verbatim().Field(fd => fd.Name).Value("")
                                                        )
                                                    )
                                                )
          ));
}