重新索引弹性搜索索引的最佳做法是什么? manually signing out帖子有几个步骤涉及在重新索引索引之前停止logstash索引器,但这不是我作为生产服务器的选项。
我遇到一个问题,因为缺少默认的映射模板,索引中没有* .raw字段。我使用了Elasticsearch发现This的映射模板并配置了我的ES集群来使用它,但我想它只会在创建新索引或显式重新索引现有索引时使用。
同样/_template?pretty
返回空响应,但在添加上述模板后{{1}}显示了一个新模板,但是要创建的新索引会自动使用这个新模板吗?或者我是否需要配置ES明确要求它使用它们?
我真的很感激这里的一些帮助。
答案 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)