1. ホーム
  2. elasticsearch

[解決済み] フィルタリングされた]に[クエリ]が登録されていません。

2022-09-01 04:45:33

質問

私は結果をフィルタリングする必要があるクエリを持っています。

これは私のクエリです。

{
    "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

どのように解決するのですか?

この 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",

PS: あなたが見ている参照ページは、付録の "deleted pages" にあるので、もうメインドキュメントの一部ではありません。