执行此操作的最佳方法是使用指向实际索引的别名。 ( https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html ), 就像是 my-index-alias 指向 my-actual-index-20170101
my-index-alias
my-actual-index-20170101
POST /_aliases { "actions" : [ { "add" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } } ] }
当您向索引查询(或添加内容)时,始终使用别名。
如果需要重新索引,则重新索引到另一个索引( my-actual-index-20170127 通过示例)并在重建索引完成后,更新别名以指向新索引。
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 )。
elasticsearch-reindex
它的用法很简单:
用npm安装后( npm install -g elasticsearch-reindex ),你可以跑
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
使用Elasticsearch进行许多不同操作的另一种方法包括重新索引 馆长 。
最新的 版 与ES 5.x和6.x兼容
使用新模板在另一个索引中重新索引文档(使用Kibana Sense)的简单方法可以是:
POST /_reindex { "source": { "index": "source-index" }, "dest": { "index": "dest-index" } }