在Elasticsearch中删除嵌套数组

时间:2019-01-11 14:27:20

标签: python elasticsearch elasticsearch-py

我有以下格式的包含嵌套表的文档:

// Merge the image (this will create a new post-processing view,
// View[0])
Merge "image.png";

// Apply the view as the current background mesh
Background Mesh View[0];

// Build a simple geometry on top of the background mesh
w = View[0].MaxX;
h = View[0].MaxY;
Point(1)={0,0,0,w};
Point(2)={w,0,0,w};
Point(3)={w,h,0,w};
Point(4)={0,h,0,w};
Line(1) = {1,2};
Line(2) = {2,3};
Line(3) = {3,4};
Line(4) = {4,1};
Line Loop(5) = {3,4,1,2};
Plane Surface(6) = {5};

“项目”为嵌套类型。我要删除给定的“项目”中的元素之一,而不是其中的对象之一具有特定值。例如:

{
"dataId": "dataIdentifier",
"versionId": "versionIdentifier",
"items": [
{
"obj1": "value1",
"obj2": "value2",
"obj3": "value3",
 },
 {
"obj1": "value4",
"obj2": "value5",
"obj3": "value6"
}, 
{
"obj1": "value7",
"obj2": "value8",
"obj3": "value9" 
}        
]
}

在这种情况下,我想删除“ items”的第二个条目。我尝试使用 update_by_query 来做到这一点,而我的尝试是:

if (obj1 == "value4" & dataId == "dataIdentifier" & versionId == versionIdentifier) :
    DELETE TABLE ENTRY 

但是我不知道如何在“ ctx._source.items.remove()”参数中指定相关条目。我看了一下Elasticsearch文档,但找不到我想要的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

通过查询更新不能删除“字段”,可以替换它,为此,可以用其他两个要更新的值来保留或删除文档,并用这两个值索引新的值值