【发布时间】:2021-03-14 15:29:26
【问题描述】:
所以我有一个场景,我有很多数据,我必须更新嵌套列表对象中的一个字段。所以我使用批量更新,我能够更新_source 中的字段。这就是数据的样子以及我如何能够更改 documentType。
"_source" : {
"accountId" : "7ef72993-a068-4c1f-89ca-f12183a78517",
"uuid" : "abdefc35-14c8-40a9-b6cf-203b4462934a",
"documentType" : "pdf",
"details" : [
{
"name" : "abhi",
"age" : 21
}
]
}
我能够批量更新 documentType 的方式是:
POST _bulk
{ "update" : {"_id" : "abdefc35-14c8-40a9-b6cf-203b4462934a", "_index" : "model_index"} }
{ "doc" : {"documentType" : "jpg"}}
我在这里只展示了一个示例,但我必须在 10K 文档上运行它,但现在我要做的是更新 details 字段名称属性。所以一件事是 details 字段是一个总是包含一个元素的列表。 (不知道为什么要这样设计,可能是为了未来的增强)。
现在我陷入困境的是我无法解析该详细信息列表。如果我指定第零个索引(如details[0]),我尝试的方法无济于事,然后它会使用该值创建一个新字段为details[0],如果我只尝试使用名称字段,那么它会使用该字段更新整个详细信息对象,如下所示:
POST _bulk
{ "update" : {"_id" : "abdefc35-14c8-40a9-b6cf-203b4462934a", "_index" : "model_index"} }
{ "doc" : {"details" : [{"name": "abhi"}]}}
-------------------------------------------------
"_source" : {
"accountId" : "7ef72993-a068-4c1f-89ca-f12183a78517",
"uuid" : "abdefc35-14c8-40a9-b6cf-203b4462934a",
"documentType" : "jpg",
"details" : [
{
"name" : "abhi"
}
]
}
那么现在如何使用批量更新来更新详细信息列表名称属性的第零索引。即使有另一种方法可以更新具有不同名称的不同文档,我们也将不胜感激。
【问题讨论】:
标签: elasticsearch