我有几个旧索引,我想改变它的映射。现在我需要将旧映射转换为新映射。我一直在阅读stackoverflow,如
但我不认为他们是我问题的确切答案。
其中许多使用不同的索引名称,因此操作更容易,但由于设置,我们使用更粗略的方式来卷曲数据,这需要精确的索引名称。
现在我的问题是:将旧索引(或多个索引)重新索引到新索引的好方法
离。
我当前的地址是“http://address-to-server:port/cluster-name/index-name”
我希望能够重新索引旧数据,以便在curl -XGET 'http://address-to-server:port/cluster-name/index-name'
时它会在新映射中提供旧数据(一些其他字段,一些已修改)
答案 0 :(得分:1)
作为我的previous answer,您可以使用重建索引插件来执行映射更改操作
https://github.com/codelibs/elasticsearch-reindexing
并确保新映射有效,并通过检查样本输入数据
采用旧数据答案 1 :(得分:0)
以下方法可用于重新索引数据。
将数据从原始索引传输到某个虚拟索引。您可以使用以下命令
elasticsearch-reindex -f "http://localhost:9200/original_index/type/" -t "http://localhost:9200/dummy_index/type/"
此命令将在终端中使用。
删除原始索引。
DELETE /original_index
将数据从虚拟索引移回原始索引
elasticsearch-reindex -f "http://localhost:9200/dummy_index/type/" -t "http://localhost:9200/original_index/type/"
这样您就可以使用新映射恢复数据。
注意:您需要为此安装npm插件。
阅读this以安装elasticsearch-reindex
命令。
希望这有帮助。
答案 2 :(得分:-1)
对于那些希望运行reindex脚本来更新相同索引的人。基本上"重新索引到相同的索引"是一个"更新查询" (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html)。您可以使用与reindex相同的script
子句并将其应用于查询结果