在使用es的过程中,有时候不小心在查询的时候应该使用Get操作,却使用了POST操作,这就会导致es的mapping里面多出一个无用的字段。或者在未定义字段类型时提交了新的数据字段,就会导致字段类型与预期的不一致,从而造成许多麻烦。
es是不支持删除单个字段的,尽管可以删除单个字段的所有数据,但是这个字段依然存在mapping声明中无法删除,这时候es的reindex api就该上场了,堪称救火神器!
基本用法
reindex的最基本形式只是将文档从一个索引复制到另一个索引,例如:
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}
上面操作会把twitter的数据复制一份到new_twitter中。
更新或创建新纪录
还可以这样使用:
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter",
"version_type": "external"
}
}
以上代码会从源保留版本,创建缺少的任何文档,并更新目标索引中具有旧版本的文档。
只创建新纪录
如果只是想单纯创建不存在的记录,