【问题标题】:Use Elasticsearch Reindex API effectively有效使用 Elasticsearch Reindex API
【发布时间】:2020-07-27 08:40:46
【问题描述】:

我正在为我的 Elastic 搜索索引重新编制索引,以防发生任何变化。我可以找到两种方法来实现这一点,但除非我遗漏了什么,否则它们在我看来是一样的。

我正在从服务 B 的 Postgres 向我的弹性搜索服务获取数据,该服务具有分页端点。

方法一:

  1. 创建指向我们现有索引的别名。
  2. 触发重新索引时,创建新索引,重新索引完成后,将指向旧索引的别名指向新创建的索引。
  3. 删除旧索引。

方法二:

  1. 创建一个新索引。
  2. 使用重新索引 API 将数据从旧索引复制到新索引,这会将新更改应用到旧文档。

对我来说,这两个看起来都一样。使用方法 2 的缺点似乎是它会创建一个新的索引名称,因此我们必须在查询时更改索引名称。

另外,考虑到我的重新索引操作不会是一项频繁的任务,我正在从分页端点读取数据,然后再次创建索引,方法 1 对我来说似乎更有意义。

【问题讨论】:

标签: elasticsearch spring-data-elasticsearch


【解决方案1】:

在方法 1 中,您使用的是别名。在方法 2 中,您没有使用别名。

如果您将别名添加到方法 2 作为步骤 3 和步骤 4,两者将是相同的 - 删除旧索引。

Refer 因为你需要经常做的事情很少。

【讨论】:

  • 感谢您的回答。但是问题仍然存在,使用 reindex API 有什么意义?可能我在这里遗漏了一些重要的东西吗?
  • 是否应该使用reindex API 来进行更频繁的重新索引?因为在我的情况下,这肯定不是一项频繁的任务。
  • 如果没有重新索引 API,您如何在选项 1 中做到这一点。
  • 当我从服务 B 获取数据时,我正在使用弹簧批处理。我从服务 B 的编写器中获取 List ,然后创建一个新索引并通过再次读取所有数据将文档放入该索引中。这就像第一次创建索引一样。如果这听起来很愚蠢,我很抱歉,因为这是我第一次使用 ES。
  • 好的。您正在从春季工作中重新创建数据。对吗?
猜你喜欢
  • 1970-01-01
  • 2018-06-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多