ElasticSearch и NEST: Как удалить все документы из индекса?

Я знаю, как удалить весь индекс ElasticSearch, но как вы очищаете все документы от индекса?

моя мотивация: я хотел бы иметь метод "ReIndex", который очищает все содержимое индекса, чтобы я мог перезагрузить все документы.

синтаксис ElasticSearch будет helful. Синтаксис NEST был бы еще лучше.

4 ответов


Я искал что-то подобное в Nest, и я думал, что поставлю синтаксис здесь для тех, кто ищет:

var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node);
var client = new ElasticClient(settings);

client.DeleteByQuery<ElasticsearchProject>(del => del
    .Query(q => q.QueryString(qs=>qs.Query("*")))
);

вы можете использовать запрос delete by. Это удалит все документы, которые соответствуют * т. е. все.

curl -XDELETE localhost:9200/<indexname>/_query?q=*
  • измените localhost на имя хоста, на котором работает узел.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

Не забудьте оптимизировать после этого.

curl localhost:9200/<indexname>/_optimize

$ curl -XPOST localhost:9200/myindex/_optimize ....

процесс оптимизации очистит все ваши softdeletes, сделанные вами путем удаления по запросу.

мы также сталкиваемся с проблемой simillar, где мы удаляем много документов.На самом деле мы перемещаем много документов из одного индекса в другой, поскольку мы разделили данные по дате. Но как ES не поддерживает перемещение данных из одного индекса в другой.

но оптимизация-дорогостоящая операция, поскольку она потребляет много IO. Если ты просто хочешь ... очистка только для удаления я думаю, что вы можете использовать флаг "only_expunge_deletes" для объединения сегментов только с удалениями.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-optimize.html


**To delete all Records -**
client.DeleteByQuery<ElasticsearchProject>(del => del
            .Query(q => q.QueryString(qs=>qs.Query("*"))
        ));
**To delete index-**
client.DeleteIndex(d => d.Index("index_name"));