提问者:小点点

ElasticSearch-如何切换别名以使用新数据重建数据索引?


基本上我想做的是用最小的停机时间用新数据重建ES集群。经过一些研究,我意识到可以使用别名来完成,但我不能100%确定确切的操作流程。

  1. 假设我有一个索引,test1在我的ES,这个索引有alias1和一堆数据

{"index":"test1","alias":"alias1"}

"操作" : [{ "添加" : { "index":"test2","alias":"alias2"}}]

"操作" : [{ "添加" : { "index":"test1","alias":"alias2"}}]

"操作" : [{ "删除" : { "index":"test1","alias":"alias1"}}]

"操作" : [{ "remove_index" : { "索引":"test2"}}]

=========================================================================

Q1这是重建/交换索引中数据的正确方法吗?

Q2.删除操作是否硬删除旧别名alias1中的数据?


共1个答案

匿名用户

德文,

Elastic的_alias中的action允许您传递要执行的所有操作的数组。

以下是我的意见/建议:

  • 不需要创建别名2别名就像“指针”。
  • 删除别名不会删除关联的索引/data
  • 别名中删除索引不会删除关联的索引/data
  • 您可以在同一个查询中传递add删除操作,这样您就不会有任何停机时间
  • 这里您忘记将test2添加到alias1中,您的webservice/kibana/任何
  • 都将使用它

查询示例:

curl -XPOST ${esUrl}/_aliases -d '{"actions":[{"remove" : {"index" : "*", "alias" : "${aliasName}"}},{"add" : { "index" : "${newIndex}", "alias" : "${aliasName}" }}]}'