Elasticsearch _count caché de solicitud de consulta
Tomado de documentos: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/shard-request-cache.html#shard-request-cache
Por defecto, las peticiones caché solo almacenan en caché los resultados de las solicitudes de búsqueda en donde
size=0, por lo que no aciertos de caché, pero va a almacenar en cachéhits.total,aggregationsysuggestions.La mayoría de las consultas que se utilizan ahora (consulte Date Math) no se pueden almacenar en caché.
Consultas con secuencias de comandos que utilizan las llamadas a la API que no son deterministas, como
Math.random()onew Date()no se almacenan en caché.
Sin embargo, ¿cómo funciona esto con las consultas _count? Las consultas _count se comportan casi exactamente igual que las consultas _search con size=0?
Esperaría que la caché de solicitudes también almacenara en caché las consultas de recuento, pero no pude encontrar ninguna información al respecto.
Respuestas
Siempre que la documentación no lo diga, vaya a la fuente ;-)
En este caso, si miramos la fuente de RestCountAction(es decir, la clase que maneja el _countpunto final), podemos ver que lo que realmente hace es crear una SearchRequestconsize: 0
a search request
|
v
SearchRequest countRequest = new SearchRequest(Strings.splitStringByCommaToArray(request.param("index")));
countRequest.indicesOptions(IndicesOptions.fromRequest(request, countRequest.indicesOptions()));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(0).trackTotalHits(true);
^
|
with size 0
Además, al construir la respuesta , podemos ver que el countvalor es en realidad el valor de hits.totalde SearchResponse:
builder.field("count", response.getHits().getTotalHits().value);
Entonces, a partir de eso, podemos deducir que las consultas de recuento también se almacenan en caché de facto.