即时通讯使用QueryContainerDescriptor填充过滤器。
我想获取所有描述不等于String.Empty的文档。
我试图做:
public static QueryContainerDescriptor<T> FilterSummaryEmpty<T>(this QueryContainerDescriptor<T> qd)
where T : ElasticEntityDoc
{
qd.Bool(b=>
b.MustNot(mn =>
mn.Term(f => f.Description, string.Empty)
));
return qd;
}
但它不起作用。我也尝试使用正则表达式,但没有成功。
我做错了什么?
最佳答案
如果您使用的是standard analyser
,则检查为空将不起作用,因为它为空不会被分析。因此,索引中没有匹配的empty
。
要对此进行检查,您需要在另一个字段中将该字段的副本复制为映射中的not_analyzed
。 Reference
因此,您可以在复制字段中检查为空,在description
字段中检查其他查询。
还有另一种检查方法。您可以使用exists
关于.net - QueryContainerDescriptor Elasticsearch-获取所有描述不等于String.Empty的文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62498267/