重新索引elasticsearch中的索引 - ELK

时间:2017-01-27 13:14:15

标签: elasticsearch indexing logstash kibana

重新索引弹性搜索索引的最佳做法是什么? manually signing out帖子有几个步骤涉及在重新索引索引之前停止logstash索引器,但这不是我作为生产服务器的选项。

我遇到一个问题,因为缺少默认的映射模板,索引中没有* .raw字段。我使用了Elasticsearch发现This的映射模板并配置了我的ES集群来使用它,但我想它只会在创建新索引或显式重新索引现有索引时使用。

同样/_template?pretty返回空响应,但在添加上述模板后{{1}}显示了一个新模板,但是要创建的新索引会自动使用这个新模板吗?或者我是否需要配置ES明确要求它使用它们?

我真的很感激这里的一些帮助。

3 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是使用指向实际索引的别名。 (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html),类似my-index-alias指向my-actual-index-20170101

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } }
    ]
}

当您向索引查询(或添加内容)时,始终使用别名。

如果需要重新索引,则重新索引到另一个索引(例如my-actual-index-20170127),并在重建索引完成后,更新别名以指向新索引。

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } },
        { "add" : { "index" : "my-actual-index-20170127", "alias" : "my-index-alias" } }
    ]
}

它允许您重新索引索引,而无需更改任何代码/有任何停机时间。

现在,关于实际的重建索引问题 - 我一直在使用elasticsearch-reindex节点应用程序取得了很大的成功(https://www.npmjs.com/package/elasticsearch-reindex)。

它的用法很简单:

用npm(npm install -g elasticsearch-reindex)安装后,你可以运行

elasticsearch-reindex -f http://localhost:9200/my-actual-index-20170101/{type of documents} -t http://localhost:9200/my-actual-index-20170127

答案 1 :(得分:0)

使用新模板在另一个索引中重新索引文档(使用Kibana Sense)的简单方法可以是:

POST /_reindex
{
  "source": {
    "index": "source-index"
  },
  "dest": {
    "index": "dest-index"
  }
}

答案 2 :(得分:0)

使用Elasticsearch执行大量不同操作(包括重新编制索引)的另一种方法是Curator

最新的version与ES 5.x和6.x

兼容