Pour les tests et l'analyse de vos requêtes vous pouvez utiliser Slow Log qui permet d'enregistrer les phases de requête et de récupération dans un fichier journal. Il est hautement configurable - vous pouvez définir ce que cela signifie "requête lente" pour chaque index.
Exemple simple pour l'index « sample » (à des fins de test, il sera connecté avec le temps réglé sur « 0 » - vous pouvez définir votre propre seuil):
Fermez tout d'abord l'index:
curl -X POST http://127.0.0.1:9200/sample/_close
configurez ensuite le lent Log:
curl -X PUT \
'http://127.0.0.1:9200/sample/_settings?preserve_existing=true' \
-d '{
"index.indexing.slowlog.threshold.index.debug" : "0s",
"index.search.slowlog.threshold.fetch.debug" : "0s",
"index.search.slowlog.threshold.query.debug" : "0s"
}'
Ouvrir l'index:
curl -X POST http://127.0.0.1:9200/sample/_open
Après l'exécution de la requête plus courte que vous avez fourni dans votre post (j'ai 5 tessons et la requête est exécutée sur chacun d'entre eux):
[index.search.slowlog.query] [sample][1] took[594.1micros], ..., source[{"query":{"term":{"price":{"value":33,"boost":1.0}}}}],
[index.search.slowlog.query] [sample][3] took[649.4micros], ..., source[{"query":{"term":{"price":{"value":33,"boost":1.0}}}}],
[index.search.slowlog.query] [sample][4] took[575.6micros], ..., source[{"query":{"term":{"price":{"value":33,"boost":1.0}}}}],
[index.search.slowlog.query] [sample][2] took[1.2ms], ..., source[{"query":{"term":{"price":{"value":33,"boost":1.0}}}}],
[index.search.slowlog.query] [sample][0] took[4.3ms], ..., source[{"query":{"term":{"price":{"value":33,"boost":1.0}}}}],
...
Après l'exécution de la requête plus que vous avez fourni dans votre message:
[index.search.slowlog.query] [sample][1] took[13.2ms], ..., source[{"query":{"constant_score":{"filter":{"term":{"price":{"value":33,"boost":1.0}}},"boost":1.0}}}],
[index.search.slowlog.query] [sample][4] took[13.2ms], ..., source[{"query":{"constant_score":{"filter":{"term":{"price":{"value":33,"boost":1.0}}},"boost":1.0}}}],
[index.search.slowlog.query] [sample][3] took[14.7ms], ..., source[{"query":{"constant_score":{"filter":{"term":{"price":{"value":33,"boost":1.0}}},"boost":1.0}}}],
[index.search.slowlog.query] [sample][2] took[15.5ms], ..., source[{"query":{"constant_score":{"filter":{"term":{"price":{"value":33,"boost":1.0}}},"boost":1.0}}}],
[index.search.slowlog.query] [sample][0] took[15.5ms], ..., source[{"query":{"constant_score":{"filter":{"term":{"price":{"value":33,"boost":1.0}}},"boost":1.0}}}],
...
Bien sûr, ce n'est qu'une tentative, mais cela peut être très utile pour des tests et des analyses plus approfondis.