【问题标题】:empty field filter in nest elasticsearch嵌套弹性搜索中的空字段过滤器
【发布时间】:2015-09-18 06:13:20
【问题描述】:

我正在尝试在 NEST 中创建一个查询,如下所示:

get * where CityName!='' and StreetName!=''

使用现有的和缺少的过滤器没有帮助,因为字段不为空。我还尝试将 queryString 与通配符 (*) 一起使用,但我在结果中返回了所有文档。我也试过这样的脚本过滤器:

qq.Filtered(ft => ft.Filter(f => f.Script(s => s.Script("doc['cityName'].value.length() > 0"))));

也不行。 这些字段使用标准标记器进行索引,也使用 ICU 折叠。有什么解决办法吗?

更新!!!!

我设法通过使用 Regexp 过滤器来完成这些工作。 所以它是这样的:

 QueryContainer notNullQuery = null;

                notNullQuery &= qq.Filtered(ft => ft.Filter(f => f.Regexp(r => r.OnField(ff => ff.StdCityName).Value("[a-z0-9]+[\\s]?"))));
                notNullQuery &= qq.Filtered(ft => ft.Filter(f => f.Regexp(r => r.OnField(ff => ff.StdStreetCode).Value("[0-9]+"))));
                notNullQuery &= qq.Filtered(ft => ft.Filter(f => f.Regexp(r => r.OnField(ff => ff.StdStreetPostCode).Value("[a-z0-9]+[\\s]?"))));
                notNullQuery &= qq.Filtered(ft => ft.Filter(f => f.Regexp(r => r.OnField(ff => ff.LastName1).Value("[a-z0-9]+[\\s]?"))));
                notNullQuery &= qq.Filtered(ft => ft.Filter(f => f.Regexp(r => r.OnField(ff => ff.FirstName1).Value("[a-z0-9]+[\\s]?"))));
                notNullQuery &= qq.Filtered(ft => ft.Filter(f => f.Regexp(r => r.OnField(ff => ff.SourceDisplayPhone).Value("[0-9]+"))));

                return notNullQuery;

后期更新: 对于 NEST 5.x 将字段索引为关键字,然后对术语进行查询搜索。不要忘记输入 Verbatim() 否则查询将不会发送到服务器。

qq.Bool(b => b.MustNot(mn => mn.Term(t => t.Field(f => f.Email).Value("").Verbatim())));

【问题讨论】:

    标签: elasticsearch filter nest


    【解决方案1】:

    默认情况下,NEST 使用称为无条件查询的功能来重写查询,而无需编写大量 if 语句来构建查询/过滤器。见http://nest.azurewebsites.net/nest/writing-queries.html

    如果您想关闭它,您可以在图表中的任何位置调用.Verbatim(bool verbatim = true),此标志会传递给子代,即使它们是无条件的,也会导致它们被写入结果查询/过滤器。

    类似地设置.Strict(bool strict = true) 将在查询是无条件但绝不允许时抛出异常。

    【讨论】:

    • 你回答的逻辑是什么?请解释一下。
    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 2020-12-27
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多