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
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.