【发布时间】:2021-09-28 10:25:13
【问题描述】:
我有一个像下面这样的对象
"_source": {
"name": "capsicum",
"id": "60f759b934e43100195c6142",
"userId": "60f7209ecdb2c0001935fa8f",
"version": 1,
"tags": [
{
"name": "fruit",
"id": "60f75990be3b530019062790",
"group": "location"
},
{
"name": "green",
"id": "60f75990be3b530019062766",
"group": "food"
},
{
"name": "red",
"id": "60f75990be3b530019062722",
"group": "food"
},
{
"name": "vegetable",
"id": "60f75990be3b53001906272d",
"group": "food"
}
]
}
如何从标签中删除一个元素,在标签中添加一个元素,在单独的 api 调用中。 我尝试了以下代码来删除但不工作
elasticClient.updateByQuery(
{
index: ElasticIndexs.Products,
body: {
script: {
source: `ctx._source.tags.removeIf(a -> a.id == params.id)`,
params: {
id: product.tag.id,
},
},
query: {
match: {
id: product.id,
},
},
},
},
function (error, response) {
console.log(response);
}
);
【问题讨论】:
-
您从日志中得到什么错误?我相信您是从某个地方获取“product.id”和“product.tag.id”到此函数的,您能否确认在此处访问这些参数时没有未定义?
-
@HemedAli,感谢您的及时回复,但问题出在其他地方,如果您有兴趣查看答案,可以在 ans 部分找到。
标签: node.js elasticsearch