web-dev-qa-db-ja.com

いいえ[クエリ]を[フィルタ対象]に登録

結果を除外するために必要なクエリがあります。

これは私の質問です

{
    "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/en/elasticsearch/reference/current/query-dsl-filtered-query.html

86
devxeq

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
                    ]
                }
            }
        }
    }
}

2つのクエリの違いは次のとおりです。

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

シモンズ:あなたが見ている参照ページは付録の「削除されたページ」にあるので、それはもう主要なドキュメンテーションの一部ではありません。

161
Val