gpt4 book ai didi

python - 使用 python 附加到现有的 elasticsearch 数组字段

转载 作者:行者123 更新时间:2023-12-03 19:44:17 25 4
gpt4 key购买 nike

我有以下 ES 对象:

    {
"_index": "index_name",
"_type": "my_type",
"_id": "12345678-abcd-9012-efgh-3456ijkl7890"
"_source": {
"apps": [
{
"processName": "process_name_1",
"name": "app_name_1",
"VersionName": "version_1"
},
{
"processName": "process_name_2",
"name": "app_name_2",
"VersionName": "version_2"
}
]
}
}

我想在保留现有数据的同时向“apps”数组添加另一个对象,如下所示:

    {
"_index": "index_name",
"_type": "my_type",
"_id": "12345678-abcd-9012-efgh-3456ijkl7890"
"_source": {
"apps": [
{
"processName": "process_name_1",
"name": "app_name_1",
"VersionName": "version_1"
},
{
"processName": "process_name_2",
"name": "app_name_2",
"VersionName": "version_2"
},
{
"processName": "process_name_3",
"name": "app_name_3",
"VersionName": "version_3"
}
]
}
}

如您所见,我只向这些应用程序对象添加了第三个“应用程序”。我需要使用 elasticsearch 模块在 Python 中执行此操作。我的所有尝试要么覆盖现有项目,要么不起作用。我尝试使用“ctx._source.apps+= newapps”脚本,但是对于 Python,它似乎只是在“apps”对象旁边附加一个名为“scripts”的新对象和新数据,而不是仅仅添加到“应用程序”对象。有什么想法吗?

最佳答案

像这样的东西应该可以工作,你可以引用 update api for python 了解更多信息。您需要将您的脚本放在body参数

from elasticsearch import Elasticsearch

es = Elasticsearch()

es.update(
index="index_name",
doc_type="my_type",
id="12345678-abcd-9012-efgh-3456ijkl7890",
body={"script": "ctx._source.apps += app",
"params": {
"app": {
"processName": "process_3",
"name": "name_3",
"VersionName": "version_3"
}
}
}
)

关于python - 使用 python 附加到现有的 elasticsearch 数组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com