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))//类型
.Query(q => q.Bool(b => b.Must(mt => mt.Term(ex =>
//.Verbatim()如果不加 那么这个term会被优化掉
ex.Verbatim().Field(fd => fd.Name).Value("")
)
)
)
));
}
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自耕田日记
评论