在 ElasticSearch 中创建一个空别名
Create an empty alias in ElasticSearch
我正在开发一个 java 应用来创建 elasticSearch 索引。该索引目前每周在开发机器上构建一次,集群手动复制到其他(测试和生产)机器上的现有集群上。新方案仍然涉及每周从头开始重建索引。
我正在使用 5.6.3 以及低级和高级其余客户端进行更新。经过一些初步调查(并获得相当多的帮助)后,我的目标是使用别名进行 2(或 3)阶段开发。
最初我会为 dev 上的现有索引添加别名,将所有新数据写入别名,然后用别名替换索引。我能想到的其他替代方案是
每次都重新创建集群,我认为总是这样
一个相当手动的过程,或者
正在重新创建索引并移动它们。由于索引无法重命名
(或者我相信,这总是会更笨重,因为它涉及在一台机器上创建索引,从活动机器上删除它们然后读取它们。目前我们在集群中有一个节点,所以这会
涉及相当多的停机时间(尽管如果别名出现
这是一个糟糕的解决方案,我想我们可以添加另一个节点并一次替换一个节点的索引)。
所以我选择了
- 使用别名。通过这种方式,我可以从重新创建索引并将其复制过来(第 1 阶段)开始,然后转向更复杂的解决方案以编程方式恢复数据,而无需关闭 elasticSearch(第 3 阶段是我们的梦想,如果我们曾经让我们的数据正确排序!)
那么进入正题。我真的很想直接创建一个空的索引别名。据我所知,这是不可能的。在其他页面中,这个 github issue.,虽然来自旧版本,但看起来这样的举动会适得其反,并且不是 elastic 想要引入的东西。所以我只是想知道
- 我完全看错了设计或者
- 现在可以创建空别名或
- 我是否应该创建一个别名,然后 delete all documents 从别名代替?
"Added comment as answer":正确。应用程序无需担心数据是来自 19 日还是 20 日。应用程序可以简单地指向别名 appind。数据 restore/load 完成后,您可以将别名与单个 POST 请求从旧索引交换到新索引。您可以在同一请求中执行删除操作和添加操作,以将别名从旧索引交换到新索引。
我正在开发一个 java 应用来创建 elasticSearch 索引。该索引目前每周在开发机器上构建一次,集群手动复制到其他(测试和生产)机器上的现有集群上。新方案仍然涉及每周从头开始重建索引。
我正在使用 5.6.3 以及低级和高级其余客户端进行更新。经过一些初步调查(并获得相当多的帮助)后,我的目标是使用别名进行 2(或 3)阶段开发。
最初我会为 dev 上的现有索引添加别名,将所有新数据写入别名,然后用别名替换索引。我能想到的其他替代方案是
每次都重新创建集群,我认为总是这样 一个相当手动的过程,或者
正在重新创建索引并移动它们。由于索引无法重命名 (或者我相信,这总是会更笨重,因为它涉及在一台机器上创建索引,从活动机器上删除它们然后读取它们。目前我们在集群中有一个节点,所以这会 涉及相当多的停机时间(尽管如果别名出现 这是一个糟糕的解决方案,我想我们可以添加另一个节点并一次替换一个节点的索引)。
所以我选择了
- 使用别名。通过这种方式,我可以从重新创建索引并将其复制过来(第 1 阶段)开始,然后转向更复杂的解决方案以编程方式恢复数据,而无需关闭 elasticSearch(第 3 阶段是我们的梦想,如果我们曾经让我们的数据正确排序!)
那么进入正题。我真的很想直接创建一个空的索引别名。据我所知,这是不可能的。在其他页面中,这个 github issue.,虽然来自旧版本,但看起来这样的举动会适得其反,并且不是 elastic 想要引入的东西。所以我只是想知道
- 我完全看错了设计或者
- 现在可以创建空别名或
- 我是否应该创建一个别名,然后 delete all documents 从别名代替?
"Added comment as answer":正确。应用程序无需担心数据是来自 19 日还是 20 日。应用程序可以简单地指向别名 appind。数据 restore/load 完成后,您可以将别名与单个 POST 请求从旧索引交换到新索引。您可以在同一请求中执行删除操作和添加操作,以将别名从旧索引交换到新索引。