根据文档(https://www.elastic.co/guide/en/elasticsearch/reference/6.0/reindex-upgrade.html),我正在尝试将旧的1.5弹性索引升级到6.0,我可以在6.0中创建一个新索引,然后使用远程reindex(https://www.elastic.co/guide/en/elasticsearch/reference/6.0/reindex-upgrade-remote.html)
这两个实例都在docker容器中运行,我只是想在实际在生产环境中执行之前在本地测试一下
我可以看到我的旧索引中有文档索引。
curl-XGET'http://localhost:9200/old_index/_search?pretty'
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "old_index",
"_type" : "item",
"_id" : "92",
"_score" : 1.0,
"_source":{"user_id":3,"slug":"asdfaisjeilej","name":"lake.jpgasdad","item_type":"image","created_at":"2018-01-23T18:11:30Z","deleted_at":null,"content_length":1252171}
}]}
}
在我的elasticsearch 6.0实例中创建一个新索引(new_index
)后,通过一个稍微不同的映射(将字符串类型更改为文本),然后我继续使用以下命令从远程重新索引。
curl -XPOST 'localhost:9400/_reindex?pretty' -H 'Content-Type: application/json' -d'
{
"source": {
"remote": {
"host": "http://localhost:9200"
},
"index": "old_index"
},
"dest": {
"index": "new_index"
}
}
我得到以下回应
{
"took" : 136,
"timed_out" : false,
"total" : 0,
"updated" : 0,
"created" : 0,
"deleted" : 0,
"batches" : 0,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
所以基本上,old_index的文档没有被复制到new_index,我不知道为什么会发生这种情况。有没有我遗漏的一步,我正在按照他们显然阅读的方式跟踪elasticsearch文档。
正如我所提到的,在没有docker的登台环境中测试了远程重新索引后,我从Elastic搜索-2迁移到Elastic搜索-6时也遇到了同样的问题。我的解决方法是创建一个旧版本的实例(不在docker上),从备份加载它并从它重新索引到不在docker上运行的elasticsearch 6实例。
如果您仍然想在docker上运行elasticsearch 6,您可以随时将数据挂载到您的容器中。
希望你觉得它有帮助。