gpt4 book ai didi

javascript - 可以用node的Elasticsearch在不重写的情况下仅更新特定字段吗?

转载 作者:行者123 更新时间:2023-12-03 02:27:32 26 4
gpt4 key购买 nike

我的文档中的字段如下所示:

_source:
...
"produto_tags" : [
{
"id_produto_cor" : "1623153806",
"tags" : []
},
{
"id_produto_cor" : "875623985732",
"tags": []
},
{...}
...

我需要在此字段上插入另一个对象,而无需重写整个 produto_tags
data to be inserted:
{
"id_produto_cor" : "312411",
"tags": []
},

我的最终文档将如下所示:
_source:
...
"produto_tags" : [
{
"id_produto_cor" : "1623153806",
"tags" : []
},
{
"id_produto_cor" : "875623985732",
"tags": []
},
{
"id_produto_cor" : "312411",
"tags": []
}
]

我正在使用NODE js,我正在使用它,但是它重写了我写的内容:
 const query = { 
doc: {
nome_relatorio: nome_relatorio,
produto_tags: produto_tags,
referencia_tags: referencia_tags,
}
};
    return await esClient.update({
index: indexName,
body: query,
id: id,
method: 'post',
type: typeDoc,
})

最佳答案

1.您可以使用update_by_query api

POST <index_name>/_update_by_query
{
"script": {
"source": "ctx._source.produto_tags.add(params.product)",
"params": {
"product": {
"product_id": "1004600287",
"tags": []
}
}
},
"query": {
"match_all": {} --> select the document
}
}

2.更新api
POST <index_name>/_update/<doc_id>
{
"script": {
"source": "ctx._source.produto_tags.add(params.product)",
"lang": "painless",
"params": {
"product": {
"product_id": "11",
"tags": []
}
}
}
}

关于javascript - 可以用node的Elasticsearch在不重写的情况下仅更新特定字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60766031/

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