python - 在elasticsearch中删除嵌套数组
问题描述
我有包含以下格式的嵌套表的文档:
{
"dataId": "dataIdentifier",
"versionId": "versionIdentifier",
"items": [
{
"obj1": "value1",
"obj2": "value2",
"obj3": "value3",
},
{
"obj1": "value4",
"obj2": "value5",
"obj3": "value6"
},
{
"obj1": "value7",
"obj2": "value8",
"obj3": "value9"
}
]
}
“项目”是嵌套类型。我想删除给定的“项目”中的一个元素,而不是其中一个对象具有一定的值。例如它将是:
if (obj1 == "value4" & dataId == "dataIdentifier" & versionId == versionIdentifier) :
DELETE TABLE ENTRY
在这种情况下,我想删除“项目”的第二个条目。我试图用update_by_query 来做,我的尝试是:
q = {
"query": {
"match_all": {}
}
},
"script": {
"lang" : "painless",
"inline" : {if (ctx._source.dataId == item.dataId && ctx._source.versionId == item.versionId && ctx._source.items.obj1 == item.obj1) {ctx._source.items.remove()}}",
"params" : {
'dataFrame': [{
"dataId" : 'myDataIdList',
"versionId" : 'myVersionId',
"obj1" : 'myValue'
} ]
}
}
}
es.update_by_query(index=myindex, body=q)
但我不知道如何在“ctx._source.items.remove()”参数中指定相关条目。我查看了 Elasticsearch 文档,但找不到我想要的东西。任何帮助将不胜感激。
解决方案
通过查询更新,您不能删除“一个字段”,您可以替换它,为此,您可以用其他两个值更新它您想要维护或删除文档并用这两个值索引一个新的
推荐阅读
- android - Windows 10 上的 Android Studio 启动错误“PluginManagerCore.getEnabledPluginRawList()”
- html - Safari 截取图片包括 ( png, svg )
- java - java - 如何使用Java反射调用将可调用接口或方法作为参数的方法
- python - 每秒使用matpltlib在python中动态更新条形图
- wxpython - 有没有办法预先确定 wx.StaticText 中文本的大小?
- javascript - 如何通过函数同时传递事件和索引
- python - Django - 解包的值太多(预期 2)
- python - 如何在带有变量的bash中运行内联python?
- swift - 如何克隆具有不同实例的 scnnode?
- linux - 日期转换代码在不同机器上表现不同