web-dev-qa-db-fra.com

non [requête] enregistrée pour [filtré]

J'ai une requête dont j'ai besoin pour filtrer les résultats.

Ceci est ma requête

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

Je reçois une erreur en disant no [query] registered for [filtered]. J'ai clairement une requête pour le champ filtré. Je suis le format donné dans la documentation de la requête filtrée sur la page elasticsearch. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html

92
devxeq

La requête filtered est obsolète et supprimée dans ES 5.0. Vous devez maintenant utiliser la requête bool/must/filter .

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

Voici les différences entre les deux requêtes:

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

PS: la page de référence que vous consultez se trouve dans les "pages supprimées" de l'annexe, elle ne fait donc plus partie de la documentation principale.

166
Val