ElasticSearch удаляет все данные

#c# #elasticsearch

#c# #elasticsearch

Вопрос:

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

  var documents = _elasticClient.Search<Product>(
                s => s.Query(q => q.MatchAll())
                .Size(100)
            );

 var enumerable = documents.Hits.Select(h => h.Source);

 await _elasticClient.DeleteManyAsync<Product>(enumerable);
  

Ответ №1:

Если вам нужно удалить все данные из индекса, вам не нужно сначала запрашивать их и передавать клиенту. Просто используйте delete by query API:

 await _elasticClient.DeleteByQueryAsync<Product>(
    s => s.Query(q => q.MatchAll())
);
  

Ответ №2:

Если вы хотите удалить все записи из индекса, то почему бы просто не удалить индекс и не создать новый, таким образом, это было бы намного быстрее и дешевле сделать.

Пожалуйста, обратитесь к delete index API для получения дополнительной информации.