即时通讯使用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_analyzedReference
因此,您可以在复制字段中检查为空,在description字段中检查其他查询。
还有另一种检查方法。您可以使用exists

关于.net - QueryContainerDescriptor Elasticsearch-获取所有描述不等于String.Empty的文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62498267/

10-15 22:44