使用翻转时更新 ElasticSearch (ES) 中的现有文档 API
Updating existing documents in ElasticSearch (ES) while using rollover API
我有一个数据源,它将创建大量我计划存储在 ElasticSearch 中的条目。
源在 ElasticSearch 中为同一文档创建两个条目:
- 'init'部分记录了ES
中随机key下的init-time等细节
- 包含主要数据的'finish'部分,并在初始化的随机密钥下更新ES中最初创建的文档(合并)。
我需要在 ElasticSearch 中使用基于时间的索引,并使用指向实际索引的别名,
使用 rollover index。
对于更新,我将使用 update API 合并 init 和 finish。
问题:如果带有随机键的初始文档不在当前索引中(但在一个已经滚动的旧索引中)将使用它的键更新它
执行成功?如果没有,执行更新的最佳做法是什么?
安静下来后,我开始测试它。
简答:在别名下滚动索引后,使用别名的更新操作仅引用新索引,因此它将在新索引中创建文档,从而产生两个单独的文档。
解决它的一种方法是在最后 2 个(或更多,如果需要)索引中执行搜索,并找出要用于更新的 non-alias 索引名称。
我更喜欢的其他解决方案是避免使用翻转,而是从我们文档的必需日期字段计算索引名称,并从应用程序创建新索引,使用模板定义映射。这样,事件溯源和按顺序重放文档将产生相同的索引。
我有一个数据源,它将创建大量我计划存储在 ElasticSearch 中的条目。 源在 ElasticSearch 中为同一文档创建两个条目:
- 'init'部分记录了ES 中随机key下的init-time等细节
- 包含主要数据的'finish'部分,并在初始化的随机密钥下更新ES中最初创建的文档(合并)。
我需要在 ElasticSearch 中使用基于时间的索引,并使用指向实际索引的别名, 使用 rollover index。 对于更新,我将使用 update API 合并 init 和 finish。
问题:如果带有随机键的初始文档不在当前索引中(但在一个已经滚动的旧索引中)将使用它的键更新它 执行成功?如果没有,执行更新的最佳做法是什么?
安静下来后,我开始测试它。
简答:在别名下滚动索引后,使用别名的更新操作仅引用新索引,因此它将在新索引中创建文档,从而产生两个单独的文档。
解决它的一种方法是在最后 2 个(或更多,如果需要)索引中执行搜索,并找出要用于更新的 non-alias 索引名称。
我更喜欢的其他解决方案是避免使用翻转,而是从我们文档的必需日期字段计算索引名称,并从应用程序创建新索引,使用模板定义映射。这样,事件溯源和按顺序重放文档将产生相同的索引。