elasticsearch 在ElasticSearch中创建空别名,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" /> elasticsearch 在ElasticSearch中创建空别名,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" />

elasticsearch 在ElasticSearch中创建空别名

elasticsearch 在ElasticSearch中创建空别名,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5,我正在开发一个java应用程序来创建elasticSearch索引。该索引当前每周在一台dev机器上构建一次,集群在其他(test&prod)机器上的现有集群上手动复制。新方案仍然包括每周从头开始重建索引 我正在使用5.6.3和低级和高级rest客户端进行更新。经过一些初步调查(并得到了相当多的帮助),我打算使用别名进行2(或3)阶段的开发 最初,我将在dev上为现有索引添加别名,将所有新数据写入别名,然后用别名替换索引。我能想到的其他替代方案是 每次都重新创建集群,我认为这将永远是 相当手工的

我正在开发一个java应用程序来创建elasticSearch索引。该索引当前每周在一台dev机器上构建一次,集群在其他(test&prod)机器上的现有集群上手动复制。新方案仍然包括每周从头开始重建索引

我正在使用5.6.3和低级和高级rest客户端进行更新。经过一些初步调查(并得到了相当多的帮助),我打算使用别名进行2(或3)阶段的开发

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

  • 每次都重新创建集群,我认为这将永远是 相当手工的过程,或

  • 重新创建索引并移动它们。As索引无法重命名 (或者我认为,这总是比较麻烦,因为它需要在一台机器上创建索引,从活动机器上删除它们,然后读取它们。目前,集群中只有一个节点,因此 包括相当多的停机时间(尽管如果别名出现 这是一个糟糕的解决方案,我想我们可以添加另一个节点,并一次替换一个节点)

  • 所以我选择了

  • 使用别名。通过这种方式,我可以从重新创建索引并复制它开始(第1阶段),然后转向更复杂的解决方案,以编程方式还原数据&而无需关闭elasticSearch(第3阶段是在数据正确排序的情况下更新索引的梦想!)
  • 问题是。我真的很想直接创建一个空的索引别名。据我所知,这是不可能的。在其他页面中,虽然这是一个较旧的版本,但似乎这样的举动会适得其反,并且不是弹性的。所以我只是想知道

  • 我在看一个完全错误的设计,或者
  • 现在有一种方法可以创建空别名或
  • 我是否应该创建一个别名,然后改为从别名创建

  • “添加注释作为答案”:正确。应用程序不必担心数据是第19个还是第20个。应用程序只需指向alias appind即可。数据还原/加载完成后,您可以使用单个POST请求将别名从旧索引交换到新索引。您可以在同一请求中执行删除操作和添加操作,以将别名从旧索引交换到新索引。

    我不确定空别名能为您带来什么。您可以始终使用单个别名。实时应用程序将指向别名名称。加载过程将创建一个新索引,然后您可以将别名从旧索引切换到新索引。单独删除所有文档不是一个好主意。相反,您可以删除该索引。此外,您还可以浏览Elasticsearch Curator以获取索引的快照/还原。好吧,我想我误解了。我认为别名是索引元数据的一部分,因此您无法将别名与另一个索引交换。我正在考虑将应用程序指向索引并创建临时别名以重建索引,然后交换别名s返回。实际上,别名可以指向不同的索引,因此更合理的做法是相反,将应用程序设置为查看别名([appind]),然后将其指向名为appind[ddmmyyyhhmm]的索引(每周更改一次)。(是否正确!)正确。应用程序不必担心数据是第19个还是第20个。它只需指向alias appind。数据还原/加载完成后,您可以使用单次post交换别名。您可以在同一请求中执行删除操作和添加操作,以将别名从旧索引交换到新索引。