Bor*_*ner 4 elasticsearch elasticsearch-plugin
我正在使用 Elasticsearch 2.3.3 并尝试制作现有索引的精确副本。(使用与 Elasticsearch 安装捆绑在一起的 reindex 插件)
问题在于复制了数据,但遗漏了映射和分析器等设置。
制作现有索引(包括其所有设置)的精确副本的最佳方法是什么?
我的主要目标是创建一个副本,更改该副本,并且只有在一切顺利的情况下才将别名切换到该副本。(零停机备份和恢复)
在我看来,实现这一目标的最佳方法是利用索引模板。索引模板允许您存储索引的规范,包括设置(因此是分析器)和映射。然后,每当您创建与模板匹配的新索引时,ES 都会使用模板中存在的设置和映射为您创建索引。
因此,首先创建一个使用index_template模板模式调用的索引模板myindex-*:
PUT /_template/index_template
{
"template": "myindex-*",
"settings": {
... your settings ...
},
"mappings": {
"type1": {
"properties": {
... your mapping ...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
接下来会发生的是,每当你想要在名称匹配的任何索引中索引新文档时myindex-*,ES 将使用此模板(+设置和映射)来创建新索引。
假设您当前的索引已被调用myindex-1,并且您希望将其重新索引到名为 的新索引中myindex-2。您将发送一个像这样的重新索引查询
POST /_reindex
{
"source": {
"index": "myindex-1"
},
"dest": {
"index": "myindex-2"
}
}
Run Code Online (Sandbox Code Playgroud)
myindex-2尚不存在,但将在使用设置和映射的过程中创建它,index_template因为名称与模式myindex-2匹配myindex-*。
就那么简单。