没有为[过滤]注册的[查询]


108

我有一个查询,我需要过滤出结果。

这是我的查询

{
    "query": {
        "filtered": {
            "query": {
                "multi_match": {
                    "default_operator": "AND",
                    "fields": [
                        "author",
                        "title",
                        "publisher",
                        "year"
                    ],
                    "query": "George Orwell"
                }
            },
            "filter": {
                "terms": {
                    "year": [
                        1980,
                        1981
                    ]
                }
            }
        }
    }
}

我说错了no [query] registered for [filtered]。我显然有一个查询的过滤字段。我遵循的是Elasticsearch页面上经过过滤的查询文档中给出的格式。 https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/query-dsl-filtered-query.html

Answers:


185

filtered查询已在ES 5.0中弃用并删除。您现在应该bool/must/filter改为使用查询。

{
    "query": {
        "bool": {
            "must": {
                "multi_match": {
                    "operator": "and",
                    "fields": [
                        "author",
                        "title",
                        "publisher",
                        "year"
                    ],
                    "query": "George Orwell"
                }
            },
            "filter": {
                "terms": {
                    "year": [
                        1980,
                        1981
                    ]
                }
            }
        }
    }
}

这是两个查询之间的区别:

3,4c3,4
<         "bool": {
<             "must": {
---
>         "filtered": {
>             "query": {
6c6
<                     "operator": "and",
---
>                     "default_operator": "AND",

PS:您正在查看的参考页面位于附录的“已删除页面”中,因此它不再是主要文档的一部分。


4
使用5.5时,似乎已从multi_match查询以及val中删除了default_operator,因此可能值得更新此答案,因为它导致我走错了路,并假设上面的方法可行,我修改了查询以匹配我的字段,然后实现了它没用!这对我来说是一个简单的解决方法,尽管它只是删除了默认运算符,但可能值得以后的读者编辑,错误是:[multi_match]查询不支持[default_operator]
Birdy

3
@Birdy实际上是该参数的名称,operator而不是default_operator,我已经修改了答案,对此感到抱歉。
瓦尔

瓦尔-如果您能抽出一点时间,请您帮我解决一个logstash问题,我将头从桌子上摔下来超过48小时,哈哈,我知道您是该领域的专家,可以帮助您节省一天的哈哈,谢谢,如果你能,我将永远负债累累!stackoverflow.com/questions/45577572/…–
Birdy

谢谢,当我将ES5.1实例升级到7.1时,这对我有用
jhob101
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.