仅当该用户不存在且用户数不存在时,如何才能将其添加到弹性搜索中?
{
"script" : {
"source": "if (ctx._source.users != null){ctx._source.user_count += params.count; ctx._source.users.add(ctx._source.users.indexOf(params.user))}",
"lang": "painless",
"params" : {
"user" : "user123",
"count": 1
}
}
}
在上面的代码中,我只是添加用户而不检查用户是否已经存在,这可能导致多个具有相同用户名的元素。
是否可以仅在用户不存在时添加?
答案 0 :(得分:0)
对于常规的放置操作,您可以添加查询参数op_type=create
,如果存在具有该ID的文档,则会导致放置失败。
例如,如果ID已经为1的用户已经存在,这将失败:
PUT users/_doc/1?op_type=create
{
"user" : "user1",
"department" : "IT"
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#operation-type