elasticsearch elasticsearch-ELK中索引的重新索引,elasticsearch,indexing,logstash,kibana,elasticsearch,Indexing,Logstash,Kibana" /> elasticsearch elasticsearch-ELK中索引的重新索引,elasticsearch,indexing,logstash,kibana,elasticsearch,Indexing,Logstash,Kibana" />

elasticsearch elasticsearch-ELK中索引的重新索引

elasticsearch elasticsearch-ELK中索引的重新索引,elasticsearch,indexing,logstash,kibana,elasticsearch,Indexing,Logstash,Kibana,对弹性搜索索引重新编制索引的最佳做法是什么?post有几个步骤涉及在重新索引之前停止logstash indexer,但这不是我的选择,因为它是一个生产服务器 我遇到一个问题,索引中没有*.raw字段,因为缺少默认映射模板。我使用了Elasticsearch找到的映射模板,并将我的ES集群配置为使用它,但我猜只有在创建新索引或显式重新索引现有索引时才会使用它 另外,/\u template?pretty返回了一个空响应,但是在添加上述模板之后,/\u template?pretty会显示一个新模

对弹性搜索索引重新编制索引的最佳做法是什么?post有几个步骤涉及在重新索引之前停止logstash indexer,但这不是我的选择,因为它是一个生产服务器

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

另外,
/\u template?pretty
返回了一个空响应,但是在添加上述模板之后,
/\u template?pretty
会显示一个新模板,但是将创建的新索引会自动使用此新模板吗?或者我需要显式地配置ES并要求它使用它们吗


在此,我非常感谢您的帮助。

执行此操作的最佳方法是使用一个指向实际索引的别名。(),类似于
my index alias
指向
my-actual-index-20170101

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } }
    ]
}
向索引查询(或添加内容)时,始终使用别名

如果需要重新编制索引,可以将索引重新编制到另一个索引(
my-actual-index-20170127
by example),重新编制索引后,可以更新别名以指向新索引

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
node应用程序,并取得了很大成功()

它的用法很简单:

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

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

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

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

使用Elasticsearch执行许多不同操作(包括重新索引)的另一种方法是

其最新版本与ES 5.x和6.x兼容