关于 elasticsearch 近实时特征的思考

Posted wessonstar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 elasticsearch 近实时特征的思考相关的知识,希望对你有一定的参考价值。

一份文档被索引之后,需要等待一段时间才能被查询到。这一性质维护了 es 的性能承诺,但也限制了它的应用场景。截至本文撰写之日,es 已经更新到了 7.x 版本。然而,网络中几乎查询不到将其用作企业级主力搜索赋能工具的案例,也许大家选择了 RMDB,亦或是技术保密吧。

环境设定

假设,我们接到一项任务,将 RMDB 切换为 NoSQL 。其中,指定 es 为搜索引擎,指定一款仅包含主键索引的数据库来存储数据,kv/column/graph 数据库可以作为辅助工具。不考虑分布式一致性问题的前提下,如何去解决延时问题呢?

独立搜索场景

如果一个搜索请求是独立的,也就不存在因果关系。发起者对结果集的大小是没有预期的,通常情况下可以接受索引延迟。

非独立搜索场景

UI 交互场景

当用户新增了一条数据,刷新列表,期望看到新增的数据。

  1. 等到索引可见后,再响应新增请求。可以通过 sleep 命令等待 1s,或者在 es 请求中设置?refresh=wait_for

  2. 在处理列表请求时,等待 1s

  3. 对于未设置搜索条件的列表页,使用 redis 缓存最近新增的数据。并在组装列表数据时,添加这些缓存数据

后台程序 write_and_read 场景

以上是关于关于 elasticsearch 近实时特征的思考的主要内容,如果未能解决你的问题,请参考以下文章

Solr 与 Elasticsearch 的近实时搜索

ElasticSearch是如何做到近实时搜索的?

Elasticsearch7.8.0版本进阶——近实时搜索

第6篇: ElasticSearch写操作—原理及近实时性分析(完整版)

为什么说Elasticsearch搜索是近实时的?

ElasticSearch索引文档写入和近实时搜索