Как я могу добавить элемент в массив в ElasticSearch, только если он не существует? - PullRequest
0 голосов
/ 20 сентября 2018

Как я могу добавить пользователя в эластичный поиск, только если пользователь не существует, а также количество пользователей?

    {
            "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
                }
            }
        }

В приведенном выше коде я просто добавляю пользователя, не проверяя,пользователь уже существует, что может привести к появлению нескольких элементов с одинаковым именем пользователя.

Можно ли добавить, только если пользователь не существует?

1 Ответ

0 голосов
/ 20 сентября 2018

Для нормальной операции размещения вы можете добавить параметр запроса op_type=create, который вызывает сбой размещения, если документ с таким идентификатором уже существует.

Например, произойдет сбой, если пользователь с идентификатором 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...