在ElasticSearch中创建一个空别名

时间:2017-10-19 13:29:41

标签: elasticsearch elasticsearch-5

我正在开发一个java应用程序来创建一个elasticSearch索引。索引目前每周在开发机器上构建,并且集群在其他(测试和产品)机器上的现有集群上手动复制。新方案仍然涉及每周从头开始重建索引。

我正在使用5.6.3和低和&高级休息客户。经过一些初步调查(并获得了相当多的帮助)后,我的目标是使用别名进行2(或3)阶段开发。

最初,我将对dev上的现有索引进行别名,将所有新数据写入别名,然后使用别名替换索引。我能想到的其他替代方案是

  1. 每次重新创建群集,我认为永远都是这样 一个相当手动的过程,或

  2. 重新创建索引并将其移动。索引无法重命名 (或者我相信,这将总是更加笨重,因为它将涉及在一台机器上创建索引,从实时机器中删除它们然后读取它们。目前我们在集群中有一个节点,所以这将 涉及相当多的停机时间(尽管如果别名结果 我想我们可以添加另一个节点并一次替换索引一个节点。

  3. 所以我选择了

    1. 使用别名。这样我就可以从重新创建索引并将其复制(阶段1)开始,然后转移到更复杂的解决方案,以便以编程方式恢复数据。没有关闭elasticSearch(如果我们的数据正确排序,第3阶段就是更新索引的梦想!)
    2. 所以回答这个问题。我真的想直接创建索引的空别名。据我所知,这是不可能的。在其他页面中,这个github issue.虽然来自旧版本,但似乎这样的举动会适得其反,而不是弹性想引入的东西。所以我只是想知道是否

      1. 我完全看错了设计或
      2. 现在有一种方法可以创建一个空别名或
      3. 我是否应该创建一个别名,然后从别名创建delete all documents

1 个答案:

答案 0 :(得分:1)

“添加评论作为答案”:正确。应用程序无需担心数据是从19日还是20日。应用程序可以简单地指向别名appind。完成数据恢复/加载后,您可以使用从旧索引到新索引的单个POST请求交换别名。您可以在同一请求中执行删除操作并添加操作,以将别名从旧索引交换到新索引。