搜索结果如何进行缓存?

6

如何实现类似stackoverflow的搜索结果缓存机制?Elasticsearch和Lucene如何处理缓存?

2个回答

4

目前,Elasticsearch提供了两种不同的缓存方式:

  1. 过滤器缓存 - 如果您可以卸载许多与结果评分无关的约束条件,则可以为该特定过滤器单独设置段层级缓存。 这个功能以及使用warmer API,为应用的过滤器提供了相当数量的基于内存的缓存。
  2. 分片请求缓存 * - 您可以在查询级别上缓存结果(除了hits)。 这是一个相当新的功能,应该提供良好的缓存效果。但仍然需要从分片中获取_source信息。

在Elasticsearch中,您可以利用这些功能来获得良好的缓存效果。 此外,您还可以探索其他缓存选项,例如memcache或其他内存缓存。


3
关于你的答案,需要更正一下——目前 Shard Query Cache 并不缓存命中结果。它仅缓存命中次数、聚合结果和建议结果,而且只有在 search_type 设置为 count 时才会缓存。 - bittusarkar
@bsarkar - 感谢您的建议。我知道它不会缓存_source,但不知道还有hits。已在答案中进行更正。 - Vineeth Mohan

3

Warmers(预热器)已被移除。索引方面的重大改进使得不再需要使用预热器。

适用于 ElasticSearch 5.4+ 版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接