我正在使用Elasticsearch 5.5版。
我的索引A带有映射:
{
"myobj": {
"enabled": false
}
我用映射创建了索引B:
{
"myobj": {
"_all": {"enabled": false},
"properties": {
"mykey": {"type": "keyword"}
}
}
}
当我用身体调用reindex api时:
{
"source": {
"index": "a"
},
"dest": {
"index": "b"
}
}
我收到错误:Cannot generate dynamic mappings of type [_version] for [_version]
以下是我尝试过的reindex请求正文:
{
"source": {
"index": "a"
},
"dest": {
"index": "b",
"version_type": "internal"
}
}
==> Cannot generate dynamic mappings of type [_version] for [_version]
{
"source": {
"index": "a"
},
"dest": {
"index": "b",
"version_type": "external"
}
}
==> Cannot generate dynamic mappings of type [_version] for [_version]
{
"source": {
"index": "a"
},
"dest": {
"index": "b"
},
"script": {
"inline": "ctx._version = ctx._source.remove(\"_version\")"
}
}
==> [myobj][1]: version conflict, current version [-1] is different than the one provided [1507030478]
我做错了什么以及如何重新索引这些文件?
修改
我已经尝试添加"conflicts": "proceed"
,这只是导致没有文档被重新编制索引。
我还在索引B的设置中添加了"index.mapper.dynamic": false
,结果没有可观察到的变化。
答案 0 :(得分:0)
在 ES 中有一些“保留”字段不能直接重新索引,例如 _version
、_index
或 _type
。 (以及已弃用的 reindex
)
尝试在您的 {
'source': { ... },
'dest': { ... },
"script": {
'inline': 'ctx._source.remove("_id");ctx._source.remove("_version");'
}
}
中删除这些保留字段。
main.add(new HelperClass(R.drawable.image, "item1", "item2", "item3"));
main.add(new HelperClass(R.drawable.image2, "item1", "item2", "item3"));