在 elasticsearch 上复制文档
Duplicate a document on elasticsearch
我需要使用 kibana 控制台在我的 elasticsearch 索引(在同一索引中)中克隆文档的内容。我需要文档的 _source 中完全相同的字段(当然,副本将有另一个 id)。我尝试过:
- 获取文件
- 创建一个新的空文档实例
- 更新新文档
手动复制结果的属性 (1):
POST /blog/post/VAv2FWoBKgnBpki61WiD/_update { "doc" : {
"content" : "..." ...
但问题是该字段包含非常长的属性。有时我会出错,因为当我从 Kibana 界面手动复制字符串时,它们似乎没有被转义。
我在文档中进行了搜索,但找不到复制文档的查询,我认为这是一个很常见的想法...
有线索吗?
利用Reindex API。这是您可以执行的操作。
步骤总结:
- 创建一个
destination_index
(虚拟)。确保映射 与 source_index
的映射完全
- 使用 Reindex API,重新索引 那个 特定文档,从
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)
。您的 destination_index 将具有与源完全相同的值的所有字段,但 _id
字段除外。
第 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)
的文档具有完全相同的内容。
希望对您有所帮助!
我需要使用 kibana 控制台在我的 elasticsearch 索引(在同一索引中)中克隆文档的内容。我需要文档的 _source 中完全相同的字段(当然,副本将有另一个 id)。我尝试过:
- 获取文件
- 创建一个新的空文档实例
- 更新新文档 手动复制结果的属性 (1):
POST /blog/post/VAv2FWoBKgnBpki61WiD/_update { "doc" : { "content" : "..." ...
但问题是该字段包含非常长的属性。有时我会出错,因为当我从 Kibana 界面手动复制字符串时,它们似乎没有被转义。
我在文档中进行了搜索,但找不到复制文档的查询,我认为这是一个很常见的想法...
有线索吗?
利用Reindex API。这是您可以执行的操作。
步骤总结:
- 创建一个
destination_index
(虚拟)。确保映射 与source_index
的映射完全
- 使用 Reindex API,重新索引 那个 特定文档,从
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)
。您的 destination_index 将具有与源完全相同的值的所有字段,但 _id
字段除外。
第 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)
的文档具有完全相同的内容。
希望对您有所帮助!