Elasticsearch _count permintaan cache cache

Sep 10 2020

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 cache hits.total, aggregationsdan suggestions.

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()atau new 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

2 Val Sep 10 2020 at 07:33

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.