Как удалить данные из ElasticSearch через JavaAPI

EDITED Я пытаюсь выяснить, как удалить данные из Elasticsearch в соответствии с критериями. Я знаю, что в старых версиях ElasticSearch была функция «Удалить по запросу», но у нее были серьезные проблемы с производительностью, поэтому ее удалили. Я также знаю, что есть плагин Java для удаления по запросу:

org.elasticsearch.plugin: удаление по запросу: 2.2.0

Но я не знаю, есть ли у него лучшая реализация удаления, которая имеет лучшую производительность, или она такая же, как и старая.

Кроме того, кто-то предложил использовать прокрутку для удаления данных, но я знаю, как получить прокрутку данных, а не как использовать прокрутку для удаления!

У кого-нибудь есть идея (количество документов, которые нужно удалить во время звонка, будет огромным, более 50 тысяч документов.

Заранее спасибо!

Наконец-то использовал этот третий вариант


person user3049941    schedule 27.12.2016    source источник
comment
Вы используете ES 2.2.0?   -  person Val    schedule 27.12.2016
comment
ES 1.7 что-то, а java API 2.3.5   -  person user3049941    schedule 27.12.2016
comment
Я не знаю, например, как сделать что-то вроде этого: curl -XDELETE localhost:9200/_search/scroll -d ' { scroll_id : [c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1] }', но с помощью API.   -  person user3049941    schedule 27.12.2016


Ответы (1)


Вы правы, что хотите использовать прокрутку/сканирование. Вот шаги:

  1. начать новую прокрутку/сканирование
  2. Получить следующие N записей
  3. Возьмите идентификаторы из каждой записи и выполните массовое удаление этих идентификаторов.
  4. вернуться к шагу 2

Таким образом, вы не удаляете точно с помощью прокрутки/сканирования, вы просто используете это как инструмент для получения всех идентификаторов для записей, которые вы хотите удалить. Таким образом, вы удаляете только N записей за раз, а не все 50 000 в 1 фрагменте (что может вызвать у вас всевозможные проблемы).

person jhilden    schedule 28.12.2016
comment
Я именно так и сделал, большое спасибо! И извините за задержку с ответом! - person user3049941; 04.01.2017