导出工具,用于在 Elasticsearch 2.3.5 索引之间通过查询复制数据



我需要使用查询从 ElasticSearch (ES) 中的一个索引中提取一些数据,并将它们复制到同一集群中的临时索引中。然后删除我从中提取数据的索引,并将临时索引重命名为已删除索引的名称。

我知道最新版本的 ES 提供了一个内置delete-by-query但我绑定到 ES v2.3.5,它通过安装delete-by-query插件提供相同的功能,但问题是我们有 20 多个节点,我们必须在其中安装插件,然后进行我们想要避免的完整集群重启。

经过SO的一些研究,并通过谷歌搜索,我发现了一个有趣的脚本工具,ElasticDump

。而且看起来也很有趣 弹性搜索导出

但是我希望从已经使用过其中一些或其他一些有趣选项的人那里得到一些意见

我必须对大约 100 个索引执行相同的操作:提取 index1 的数据 ->将这些数据复制到临时索引 ->删除索引 1 - 将临时索引重命名为 index1,因此欢迎使用可以自动化该过程的工具。无论如何,我知道我可以使用例如ElasticDump在这 100 个索引中的每一个中重复该过程来创建 bash 脚本。

提前致谢

使用 _reindex API 创建新索引。

在旧索引上创建别名,并在应用程序中使用该别名。当您想要创建新索引时,只需将旧索引重新索引为具有不同名称的新索引即可。_reindex完成后,可以通过一个原子操作从旧索引中删除别名并将其添加到新索引上。这样:

curl -XPOST 'http://localhost:9200/_aliases' -d '
{
"actions" : [
{ "remove" : { "index1" : "test1", "alias" : "alias1" } },
{ "add" : { "index2" : "test1", "alias" : "alias1" } }
]
}'

这应确保在索引切换过程中不会停机。切换别名后,您可以随时删除旧索引。 请参阅:https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html

最新更新