Как удалить много записей из elasticsearch?

Дано, база на сотни миллионов записей вида:
ID, FILE_ID, SITE_ID
надо оптимальным образом удалить десятки тысяч записей для которых мы знаем FILE_ID, а SITE_ID в пределах одного запроса - одинаковый.
ID - уникальны (но мы их изначально не знаем)
FILE_ID - уникальны для каждого сайта
Т.е. на SQL это выглядело бы примерно так
delete from table where (FILE_ID=x or FILE_ID=y or ....) and (SITE_ID=z)
  • Вопрос задан
  • 984 просмотра
Пригласить эксперта
Ответы на вопрос 2
al_gon
@al_gon
Ничего умнее не приходит в голову.

https://www.elastic.co/guide/en/elasticsearch/refe...

{
    "query": {
        "query_string": {
            "query": "(FILE_ID:x OR FILE_ID:y OR ....) AND (SITE_ID:z)"
        }
    }
}
Ответ написан
@Vdm17
PHP Developer
Для ES 5.0+ есть DeleteByQuery API
https://www.elastic.co/guide/en/elasticsearch/refe...

POST index_name/type_name/_delete_by_query
{
  "query": {
    "bool": {
      "must": [
        {"term": {"SITE_ID": "z"}}
      ],
      "should": [
        {"term": {"FILE_ID": "x"}},
        {"term": {"FILE_ID": "y"}},
        ...
      ],
      "minimum_should_match": 1
    }
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы