Si l'on veut compter le nombre de documents dans un index (de Elasticsearch), il y a (au moins?) Deux possibilités:
Direct count
POST mon_index/_count
devrait renvoyer le nombre de documents dans my_index
.
tilisation de search
Ici, on peut utiliser le count
comme le search_type
ou un autre type. Dans les deux cas, le nombre total peut être extrait du champ ['hits']['total']
Mes questions sont:
quelle est la différence entre les différentes approches? Lequel devrais-je préférer?
Je soulève cette question parce que je vis des résultats différents selon la méthode choisie. Je suis en train de déboguer le problème, et cette question a surgi.
Probablement _count
est un peu plus rapide car il n’est pas nécessaire d’exécuter une requête complète avec classement et récupération des résultats et peut simplement renvoyer la taille.
Il serait intéressant d’en savoir un peu plus sur la manière dont vous parvenez à obtenir des résultats différents. Pour cela, j'ai besoin de plus d'informations telles que les requêtes exactes que vous envoyez et si une indexation est en cours sur l'index.
Mais supposons que vous fassiez ce qui suit
_search
et _count
(avec une correspondance avec toutes les requêtes) devrait renvoyer le même total. Sinon, ce serait très bizarre.
Les deux requêtes donnent le même résultat mais: - count consomme moins de ressources/de bande passante, car il n’est pas nécessaire d’extraire des documents, des scores et d’autres optimisations internes. Définir la taille de la recherche à 0, pourrait être très similaire.
Si vous souhaitez compter tous les enregistrements d'un index, vous pouvez également exécuter des conditions d'agrégation sur le champ "_type".
Les résultats devraient être les mêmes. Avant de comparer les résultats, veillez à exécuter une actualisation de l'index.