繁体   English   中英

使用翻转 API 时更新 ElasticSearch (ES) 中的现有文档

[英]Updating existing documents in ElasticSearch (ES) while using rollover API

我有一个数据源,它将创建大量我计划存储在 ElasticSearch 中的条目。 源在 ElasticSearch 中为同一个文档创建了两个条目:

  • 'init' 部分在 ES 中的随机密钥下记录初始化时间和其他详细信息
  • 'finish' 部分包含主要数据,并在 init 的随机密钥下更新 ES 中最初创建的文档(合并)。

我需要在 ElasticSearch 中使用基于时间的索引,使用rollover index使用指向实际索引的别名。 对于更新,我将使用更新 API来合并 init 和 finish。

问题:如果带有随机键的 init 文档不在当前索引中(但在一个已经翻转的旧索引中)是否会使用它的键成功执行更新它? 如果没有,执行更新的最佳做法是什么?

经过一段时间的安静后,我开始测试它。

简短回答:索引在别名下滚动后,使用别名的更新操作仅引用新索引,因此它将在新索引中创建文档,从而导致两个单独的文档。

解决它的一种方法是在最后 2 个(或更多,如果需要)索引中执行搜索,并找出用于更新的非别名索引名称。

我更喜欢的其他解决方案是避免使用翻转,而是从我们文档的所需日期字段计算索引名称,并从应用程序创建新索引,使用模板定义映射。 通过这种方式,事件溯源和按顺序重放文档将产生相同的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM