Удалить все документы ответа поиска - PullRequest
0 голосов
/ 02 ноября 2018

Использование гнезда для эластичного поиска Я пытаюсь удалить точное число документов (самый старый, который я могу найти) из моего индекса. Мой сопоставленный объект имеет поле TimeStamp. Единственный способ, которым мне удалось выполнить эту работу, - это поиск этих документов, а затем выполнение foreach для каждого попадания и передача идентификатора этого попадания в API удаления и их удаление по одному:

var searchResponseAsc = client.Search<MyPersonalObject>(s => s.Sort(sd => sd.Ascending(e => e.TimeStamp)).Take(NumberOfDocumentsToBeDeleted));

foreach (IHit<MyPersonalObject> hit in searchResponseAsc.Hits) {
    client.DeleteByQuery<MyPersonalObject>(dbq => dbq.Index(IndexName).Query(q => q.Ids(s => s.Values(hit.Id))));
}

Есть ли способ вызвать API удаления для большей части поискового ответа или, что еще лучше, вложить поисковый запрос непосредственно в запрос на удаление?

Любые советы будут высоко оценены!

1 Ответ

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

Вы можете встроить поисковый запрос Elasticsearch в удалить по запросу API:

POST twitter/_delete_by_query
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}
...