Elasticsearch _count permintaan cache cache
Diambil dari dokumen: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/shard-request-cache.html#shard-request-cache
Secara default, permintaan tembolok hanya akan cache hasil permintaan pencarian di mana
size=0, sehingga tidak akan hit cache, tetapi akan cachehits.total,aggregationsdansuggestions.Sebagian besar kueri yang digunakan sekarang (lihat Matematika Tanggal) tidak bisa di-cache.
Kueri skrip yang menggunakan panggilan API yang non-deterministik, seperti
Math.random()ataunew Date()tidak di-cache.
Namun bagaimana cara ini bermain dengan kueri _count? Kueri _count berperilaku hampir persis sama dengan _ kueri penelusuran dengan size=0?
Saya mengharapkan permintaan cache untuk permintaan jumlah cache juga, tetapi tidak dapat menemukan informasi apa pun tentangnya.
Jawaban
Kapanpun dokumentasinya tidak memberitahu, pergi ke sumbernya ;-)
Dalam hal ini, jika kita melihat pada sumber RestCountAction(yaitu kelas yang menangani _counttitik akhir), kita dapat melihat bahwa apa yang sebenarnya dilakukannya adalah membuat SearchRequestdengansize: 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
Selanjutnya, ketika membangun respon kita dapat melihat bahwa countnilai sebenarnya nilai hits.totaldari SearchResponse:
builder.field("count", response.getHits().getTotalHits().value);
Jadi, dari situ, kita dapat menyimpulkan bahwa kueri hitungan juga di-cache secara de facto.