0

我正在尝试创建弹性搜索查询并对搜索结果应用过滤器,如下所示:

"query" : {
        "custom_filters_score" : {
            "query" : {"match" : {"country" : {"query" : "usa","operator" : "and"}}},
            "filters" : [
                {
                    "filter" : {"query" : {"match" : {"state" : {"query" : "statename","operator" : "and"}}} },
                    "boost" : "3"
                },
                {
                    "filter" : {"query" : {"match" : {"city" : {"query" : "cityname","operator" : "and"}}} },
                    "boost" : "3"
                }
            ],
            "score_mode" : "first"
        }
    }

这里过滤器不起作用。它不会过滤特定州和城市的数据,并不会返回美国国家/地区的所有州和城市的数据。

请提供任何帮助!

问候

4

1 回答 1

2

我认为您误解了自定义过滤器分数查询的作用。过滤器不是用来过滤数据的,而是给匹配它们的文档一个特定的分数。因此,elasticsearch 将所有这些文档返回给您是正常的。他们的分数将根据您提供的过滤器计算。

如果您只想过滤您的文档,您需要使用普通过滤器。elasticsearch查询 DSL也为过滤器提供了很多选项(请看页面底部)。例如,查看bool 过滤器以组合多个过滤器。

于 2012-10-29T17:10:15.100 回答