【问题标题】:Elasticsearch--reindexing to the same index nameElasticsearch--重新索引到相同的索引名称
【发布时间】:2016-02-05 20:06:12
【问题描述】:

我想更改几个旧索引的映射。现在我需要将旧映射转换为新映射。我一直在阅读 stackoverflow 之类的内容

This one

This one

and this one

但我不认为它们是我问题的确切答案。

其中许多使用不同的索引名称,因此操作更容易,但由于设置原因,我们使用更粗略的方式来卷曲数据,这需要准确的索引名称。

现在我的问题是:将旧索引(或多个索引)重新索引为新索引的好方法是什么

例如。

我现在的地址是'http://address-to-server:port/cluster-name/index-name'

我希望能够重新索引旧数据,以便当我 curl -XGET 'http://address-to-server:port/cluster-name/index-name' 它会在新映射中提供旧数据(一些额外的字段,一些修改)

【问题讨论】:

  • 您可以使用:npmjs.com/package/elasticdump
  • 但这能处理字段的修改吗?假设在旧索引映射中我有field1 <type:float>,新映射将有field1<type:integer>。会不会出错?
  • 这是一个导入/导出工具。如果您的数据映射被破坏 - 没有工具可以修复它......

标签: elasticsearch reindex


【解决方案1】:

作为我的previous answer,您可以使用重新索引插件来执行映射更改操作

https://github.com/codelibs/elasticsearch-reindexing

还要确保您的新映射有效,并通过检查示例输入数据来采用您的旧数据

【讨论】:

    【解决方案2】:

    以下方法可用于重新索引数据。

    1. 将数据从原始索引转移到某个虚拟索引。您可以使用以下命令

      elasticsearch-reindex -f "http://localhost:9200/original_index/type/" -t "http://localhost:9200/dummy_index/type/"

      此命令用于终端。

    2. 删除原始索引。 DELETE /original_index

    3. 创建与原始索引同名并更改映射的索引。
    4. 将数据从虚拟索引移回原始索引

      elasticsearch-reindex -f "http://localhost:9200/dummy_index/type/" -t "http://localhost:9200/original_index/type/"

    通过这种方式,您可以使用新映射恢复数据。

    注意:您需要为此安装 npm 插件

    阅读this 安装elasticsearch-reindex 命令。

    希望这会有所帮助。

    【讨论】:

    • 如果我在删除原始索引之后在 with reindex 之前创建了映射,我是否必须使用再次创建愿望映射将数据从虚拟索引备份到原始索引??
    • 代替第 3 步和第 4 步,只需为新索引创建一个别名(使用原始索引名称)。因此无需将数据移回。
    • 这在生产中很难实现,如果数据传输到dummy_index 完成后,original_index 中有新数据怎么办。这些数据现在永远丢失了。
    【解决方案3】:

    对于那些希望运行重新索引脚本来更新相同索引的人。基本上“重新索引到相同的索引”是“通过查询更新”(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html)。您可以使用与 reindex 相同的 script 子句并将其应用于查询结果

    【讨论】:

    • 在我问这个问题的时候,我们的 ES 版本还在 1.x 上,它没有按查询更新或按查询删除功能。不得不说,添加这些功能让事情变得简单了很多
    • 不一样。您不能使用按查询更新来更改 _id。
    • 通过查询更新将不允许您更改现有映射。为此,您需要一个新索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多