我有一个简单的问题。
我正在尝试将“标记”附加到ElasticSearch数组中。
我发现在ElasticSearch中很难完全理解脚本函数,但找到了两个执行该任务的查询,但都必须调用。这意味着php(在我的例子中)必须向elasticsearch数据库发送两个post请求,我认为
可以
长期存在一些问题。
我认为只在一个查询中发送所有信息会更安全。
下面的查询是为了更新
votes
调用的数组
tags
从
1
,为了
2
. 我相信有比我做的更好的方法。
以下是我使用的查询:
我不知道为什么
votes: 2
有,但它似乎完成了删除标签的工作。正如我所说,我发现在ElasticSearch中很难全神贯注于脚本编写。
POST /db2/links/1/_update
{
"script": {
"inline": "for(int i=0;i<ctx._source.tags.size();i++){if(ctx._source.tags[i].name==\"tagname\"){ctx._source.tags.remove(i)}}",
"params": {
"votes": 2
}
}
}
此查询用于将标记附加到
标签
文档的数组
POST /db2/links/1/_update
{
"script": {
"inline": "ctx._source.tags.add(params.appendtags)",
"params": {
"appendtags": {
"name": "tagname",
"votes": 2
}
}
}
}
在一个查询中,是否有任何方法可以轻松地将这两个脚本组合在一起?