Elasticsearch _count query request cache
Retirado de documentos: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/shard-request-cache.html#shard-request-cache
Por padrão, as solicitações de cache apenas irá armazenar em cache os resultados de solicitações de pesquisa, onde
size=0, por isso não vai acertos do cache, mas vai armazenar em cachehits.total,aggregationsesuggestions.A maioria das consultas que usam agora (consulte Date Math) não podem ser armazenadas em cache.
Consultas com script que usam as chamadas de API não determinísticas, como
Math.random()ounew Date()não armazenadas em cache.
No entanto, como isso funciona com as consultas _count? As consultas _count se comportam quase exatamente da mesma forma que as consultas _search com size=0?
Esperaria que o cache de solicitação também fizesse o cache das consultas de contagem, mas não consegui encontrar nenhuma informação sobre isso.
Respostas
Sempre que a documentação não informar, vá para a fonte ;-)
Neste caso, se olharmos para a fonte de RestCountAction(ou seja, a classe que manipula o _countendpoint), podemos ver que o que realmente faz é criar um SearchRequestcomsize: 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
Além disso, ao construir a resposta , podemos ver que o countvalor é na verdade o valor de hits.totalde SearchResponse:
builder.field("count", response.getHits().getTotalHits().value);
Portanto, podemos deduzir que as consultas de contagem também são armazenadas em cache de fato.