2015-07-30 3 views
4

Я обновляю свои документы в elasticsearch и добавляю новых пользователей, поэтому, как пример, предположим, что я добавляю двух новых пользователей к имени моего поля «update_field». Итак, теперь, если я теперь добавлю это два значения в мое имя поля «update_field», поэтому, если я попытаюсь вставить это снова, он не будет вставлять данные снова, или я имею в виду, что он не будет дублировать данные. Как я могу это сделать, может кто-нибудь знает, как я могу написать метод, чтобы остановить повторяющихся данных для elasticsearch, я работаю на PHPКак остановить повторяющиеся данные

ответ

3

Да, просто изменить свой сценарий к этому:

"script": "ctx._source.update_field = (ctx._source.update_field + new_value).unique();" 

Мы в основном конкатенация двух списков в groovy, а затем с unique() мы можем удалить все дубликаты. Другим способом было бы сделать список как Set, который будет иметь тот же эффект.

+0

Возможно, вы имели в виду: $ script ['script'] = "ctx._source. Update_field = (ctx._source. Update_field + new_value) .unique()"; apperently не работает :) –

+0

Какая ошибка вы получаете? – Val

+0

Извините, мой плохой. Это была моя ошибка, я делал это неправильно. Большое спасибо за ваш отличный ответ и помощь :) –

Смежные вопросы