119 votes

Quelle est la différence entre must et filter dans Query DSL dans elasticsearch?

Je suis nouveau à l'elastic search et je suis confus entre le doit 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 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? Quelle est la différence?

127voto

Vijay Gupta Points 1669

must contribue au score. En filter, le score de la requête est ignorée.

Dans les deux 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 consulter ce lien

Score

Le niveau de pertinence de chaque document est représenté par un nombre positif à virgule flottante appelée l' _score. Plus le _score, plus la pertinence du document.

Une requête clause génère un _score pour chaque document.

Pour savoir comment score est calculé, consultez ce lien

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X