No [query] зарегистрирован для [filter] - программирование
Подтвердить что ты не робот

No [query] зарегистрирован для [filter]

У меня есть запрос, который должен отфильтровывать результаты.

Это мой запрос

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

4b9b3361

Ответ 1

Запрос 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
                    ]
                }
            }
        }
    }
}

PS: справочная страница, на которую вы смотрите, находится на "удаленных страницах" приложения, поэтому она больше не является частью основной документации.