我需要使用kibana控制台克隆我的Elasticsearch索引(在同一索引中)的文档内容。我在文档的_source中需要完全相同的字段(当然,副本将具有另一个ID)。我尝试过:
POST /blog/post/VAv2FWoBKgnBpki61WiD/_update { "doc" : { "content" : "..." ...
但是问题是该字段包含veerery长属性。有时我会出错,因为当我从Kibana界面手动复制字符串时,这些字符串似乎没有被转义。
我在文档中进行了搜索,但是找不到重复文档的查询,这是我认为很普遍的想法...
有任何线索吗?
答案 0 :(得分:0)
使用Reindex API。这是您可以做的。
destination_index
(虚拟)。确保映射与source_index
source_index
重新索引为desitnation_index
。在此操作过程中,更新_id(我已经提到了脚本)desitnation_index
重新索引到source_index
步骤1:将文档从source_index复制到destination_index。 (使用脚本)
POST _reindex
{
"source": {
"index": "source_index",
"query": {
"match": {
"_id": "1"
}
}
},
"dest": {
"index": "destination_index"
},
"script": {
"inline": "ctx._id=2",
"lang": "painless"
}
}
请注意,我如何在上述查询中添加script
来更改文档的_id (_id is set as 2)
。除了_id
字段之外,您的destination_index的所有字段的值都与源字段的值完全相同。
步骤2:将文档从destination_index复制到source_index
POST _reindex
{
"source": {
"index": "destination_index",
"query": {
"match": {
"_id": "2"
}
}
},
"dest": {
"index": "source_index"
}
}
现在搜索source_index
,它将有两个具有完全相同内容的不同_ids (_id=1 and _id=2)
的文档。
希望这会有所帮助!