Je suis nouveau dans la recherche élastique et je suis confus entre le moût et le filtre. 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 requis correspondant aux deux termes, et sur l'utilisation d'un filtre comme celui-ci
POST/xyz/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": "city1"
}
}
],
"filter": {
"term": {
"saleType": "sale_type1"
}
}
}
}
}
J'obtiens le même résultat, alors quand dois-je utiliser le moût et quand dois-je utiliser le filtre? Quelle est la différence?
must
contribue au score. Dans filter
, le score de la requête est ignoré.
Dans 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 vérifier cela lien
But
Le score de pertinence de chaque document est représenté par un nombre à virgule flottante positif appelé
_score
. Plus le_score
, plus le document est pertinent.
Une clause de requête génère un _score
pour chaque document.
Pour savoir comment le score est calculé, reportez-vous à cette lien