ElasticSearch - удаление документов по определенному полю - PullRequest
0 голосов
/ 13 ноября 2018

Эта, казалось бы, простая задача недостаточно документирована в документации ElasticSearch:

У нас есть экземпляр ElasticSearch с индексом, в котором есть поле с именем sourceId.Какой вызов API я бы сделал сначала GET всем документам со значением 100 в поле sourceId (чтобы проверить результаты перед удалением), а затем DELETE таких же документов?

1 Ответ

0 голосов
/ 13 ноября 2018

Вам, вероятно, нужно сделать два вызова API здесь.Первый, чтобы просмотреть количество документов, второй, чтобы выполнить удаление.

Запрос будет таким же, но конечные точки будут другими.Также я предполагаю, что sourceId будет иметь тип keyword

Запрос для проверки

POST <your_index_name>/_search
{
  "size": 0,
  "query": {
    "term": {
      "sourceId": "100"
    }
  }
}

Выполните Term Query и сделайте заметку наhits.total ответа.

Удалите "size":0 в приведенном выше запросе, если вы хотите просмотреть все документы в качестве ответа.

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

Запрос на удаление

POST <your_index_name>/_delete_by_query
{
  "query": {
    "term": {
      "sourceId": "100"
    }
  }
}

Как только вы выполните Удаление по запросу , обратите внимание на поле deleted в ответе.Он должен показать вам тот же номер.

Я использовал термины запросов, однако вы также можете использовать любой Match или любой сложный Bool Query .Просто убедитесь, что запрос правильный.

Надеюсь, это поможет!

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