We are using random_score function with seed as
System.nanoTime() and field as one of the keyword fields in the index for a use-case of returning random results from the index with pagination support. We are observing huge search latencies (1000-4000ms range) when the number of documents that are matched are high (>10000) (we use filters etc. but we have to return these documents). I ran an adhoc test and observed that using
_seq_no as field has much better search latency (80-130ms range).
From ES documentation, it is mentioned:
A good default choice might be to use the _seq_no field, whose only drawback is that scores will change if the document is updated since update operations also update the value of the _seq_no field.
We can accept the
_seq_no value changes when the document gets updated. I wanted to understand why using the
_seq_no field is efficient compared to using a keyword field in the index. Could anyone share some light on it? I could not find any documentation related to why this could happen.