es中修改索引名称命令_在Elasticsearch中更改索引名称

es中修改索引名称命令

嘿,

今天,我碰巧写了一个脚本来解决一个看起来很多人都面临的特定问题:重命名给定的Elasticsearch索引。 自然地,有记录在案的解决方案,但是我没有Swift找到一个脚本可以让我找到我想要的位置—来自索引a所有数据现在都可以在设置了所有属性的索引b查询。

注意:以下代码针对Elasticsearch 2.4.6。

然后它来了。

逐步重新索引

有四个步骤可以实现我们的目标:

  1. 创建一个Elasticsearch索引并用一些数据填充它;
  2. 获取原始索引的配置;
  3. 使用所需的配置创建新索引;
  4. 运行_reindex操作;
  5. 删除旧索引。
0.创建一个Elasticsearch索引并用一些数据填充它

为了使用默认参数(例如,分片和副本的数量)创建索引,我们可以针对指定所需索引(在本例中为acme-production的Elasticsearch HTTP端点发出POST

自然,没有索引的数据:

现在我们用一些数据填充它:

我们可以通过再次查看/_cat/indices端点来验证这一点:

1.获取原始索引的配置

因为重命名仅是“创建,复制和删除”,所以我们需要使用旧索引的属性来创建新索引。 为了正确实现这一点,我们必须然后复制旧配置:

ps .:这里我使用jq (轻量级命令行JSON处理器),以便从通过调用/<index>/_settings,_mappings返回的更大对象中获取映射和设置对象。 这样,我们可以将其分配给变量,然后在以后使用它。

2.使用所需的配置创建新索引

使用旧的配置(存储在index_config变量中),我们可以基于它创建索引:

PS:虽然有一个 _uuid_ _$index_config_ 对象那里,它并不重要-它会得到一个新的替代 _uuid_ 的新指标。

3.运行_reindex操作

正确配置两个索引后,我们就可以将旧索引中的数据存储到新索引中了:

此时,您应该已经填充了新索引。 现在只需删除旧索引即可:

4.删除旧索引

如果您不打算使用旧索引,现在是时候删除它了:

别名呢?

我想在这里分享一些有关Reddit的有趣反馈。

事实证明,有时我们可以通过使用别名来避免reindex编制reindex (请参阅Elasticsearch Indices Aliases)。

这个想法是,当我们需要通过使用另一个名称来引用索引所涵盖的内容时,我们可以为真实索引创建某种“指针”,并针对该指针(别名)执行所有常规操作。 允许这样做的API允许我们从本质上CRUD (创建,删除,更新和删除)别名,这使我们完全有可能执行我们想要的操作:实现索引的“重新命名”,即使只是虚拟的。

那我们做吧。

首先,像之前一样创建一个acme-production索引并添加一些数据:

然后创建一个alias acme-staging

如果我们检查索引,我们会发现我们没有任何新索引:

但是,我们确实有别名:

这使我们能够针对acme-staging执行查询并从acme-production检索数据:

现在,如果我们要禁止对旧索引的请求该怎么办? 好像我们已经真正重命名了但没有重复吗? 然后,我们需要使用打开/关闭索引api关闭旧索引:

curl -XPOST [http://localhost:9200/acme-production/_close](http://localhost:9200/acme-production/_close)

那么我们可以尝试从acme-production获取acme-production

太酷了,我们想要什么,对吧? 现在,如果我们尝试从acme-staging获得:

我们也无法检索。

在我看来,我们不能因为别名只是指向另一个索引(已关闭)的指针而听起来很合理。

因此,总而言之,如果您想让新索引指向现有索引(就像您在重命名一样),则别名将为您节省时间,并且您需要执行0数据复制。

如果您需要使用“重命名”之类的东西并且不允许访问旧索引,则alias将无济于事(将不得不使用reindex + delete策略。

我以前从未使用过别名,很高兴知道它们的存在! 有时候,它肯定非常有用。

结束思想和资源

作为从未真正深入研究过Elasticsearch工作原理的人,我发现重新索引的整个概念非常容易。 官方文档非常好,有了它,我得以快速解决问题。 荣誉Elasticsearch团队!

谢谢,

菲尼斯

最初于 2017 年11月21日 ops.tips 发布

翻译自: https://hackernoon.com/changing-the-name-of-an-index-in-elasticsearch-28487b517ad1

es中修改索引名称命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值