Quelle est la différence entre le must et le filter dans la requête DSL dans elasticsearch?
je suis nouveau à la recherche élastique et je suis confondu entre le must et le filter. Je veux effectuer une opération entre mes conditions, j'ai donc fait cela
POST / xyz/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": "city1"
}
},
{
"term": {
"saleType": "sale_type1"
}
}
]
}
}
}
ce qui m'a donné les résultats correspondant à la fois les termes, et sur l'utilisation de filtre comme ceci
POST / xyz/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": "city1"
}
}
],
"filter": {
"term": {
"saleType": "sale_type1"
}
}
}
}
}
j'obtiens le même résultat, donc quand dois-je utiliser doit et quand dois-je utiliser le filtre? Qu'est-ce que l' la différence?
1 réponses
must
contribue au score. filter
, le résultat de la requête est ignorée.
must
et filter
, la clause(requête) doit apparaître dans les documents correspondants. C'est la raison pour obtenir les mêmes résultats.
Vous pouvez le vérifier lien
Score
le score de pertinence de chaque document est représenté par un nombre flottant positif appelé
_score
. Plus le_score
, le plus la pertinence du document.
une clause query génère un _score
pour chaque document.
pour savoir comment le score est calculé, référez ceci lien