关于 elasticsearch 近实时特征的思考
Posted wessonstar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 elasticsearch 近实时特征的思考相关的知识,希望对你有一定的参考价值。
一份文档被索引之后,需要等待一段时间才能被查询到。这一性质维护了 es 的性能承诺,但也限制了它的应用场景。截至本文撰写之日,es 已经更新到了 7.x 版本。然而,网络中几乎查询不到将其用作企业级主力搜索赋能工具的案例,也许大家选择了 RMDB,亦或是技术保密吧。
环境设定
假设,我们接到一项任务,将 RMDB 切换为 NoSQL 。其中,指定 es 为搜索引擎,指定一款仅包含主键索引的数据库来存储数据,kv/column/graph 数据库可以作为辅助工具。不考虑分布式一致性问题的前提下,如何去解决延时问题呢?
独立搜索场景
如果一个搜索请求是独立的,也就不存在因果关系。发起者对结果集的大小是没有预期的,通常情况下可以接受索引延迟。
非独立搜索场景
UI 交互场景
当用户新增了一条数据,刷新列表,期望看到新增的数据。
-
等到索引可见后,再响应新增请求。可以通过 sleep 命令等待 1s,或者在 es 请求中设置
?refresh=wait_for
-
在处理列表请求时,等待 1s
-
对于未设置搜索条件的列表页,使用 redis 缓存最近新增的数据。并在组装列表数据时,添加这些缓存数据
后台程序 write_and_read 场景
以上是关于关于 elasticsearch 近实时特征的思考的主要内容,如果未能解决你的问题,请参考以下文章