Joey Yi Zhao
Joey Yi Zhao

Reputation: 42500

How does Elasticsearch6.8 cache the same request on the second time?

I am using Elasticsearch 6.8 and I'd like to know if I send the same request multiple times, will ES do any optimised operation on that? If yes, is there any document explain how this works?

Upvotes: 0

Views: 373

Answers (2)

Amit
Amit

Reputation: 32376

Adding more details to the answer given by @fmdaboville.

The above caches are provided out of the box and below are some options if you want to enable/disable more cache.

Enabling/fine tuning more cache options

Query type: if you are using filters in a search query, then those are cached by default at Elasticsearch and doesn't contribute to the score as it just means to filter out the data, more info from this official doc:

In a filter context, a query clause answers the question “Does this document match this query clause?” The answer is a simple Yes or No — no scores are calculated. Filter context is mostly used for filtering structured data, e.g.

Does this timestamp fall into the range 2015 to 2016? Is the status field set to "published"? Frequently used filters will be cached automatically by Elasticsearch, to speed up performance.

Using refresh interval: this official doc has a lot more info, but in short its good, if you are OK to get some obsolete data and ready to trade-off it in favor of performance.

This makes new index changes visible to search.

Disable the cache on a particular request

By default, heavy searches are cached at shards level as explained in this official doc, but for certain requests, if you want to enable/disable this behavior then you can go use this in your API call.

Simply add below query param in your search param. link in API call has several other settings to do it.

request_cache=true/false

Upvotes: 1

fmdaboville
fmdaboville

Reputation: 1781

Here is the documentation explaining how work the optimized search : Tune for search speed. The part about cache seems to be what you are looking for :

There are multiple caches that can help with search performance, such as the filesystem cache, the request cache or the query cache. Yet all these caches are maintained at the node level, meaning that if you run the same request twice in a row, have 1 replica or more and use round-robin, the default routing algorithm, then those two requests will go to different shard copies, preventing node-level caches from helping.

Upvotes: 0

Related Questions