2015-05-21 3 views
1

Буду очень признателен, если кто-то скажет мне правильный способ удалить все данные определенного типа с помощью NEST. У меня есть один индекс в моем поиске elastics и два типа, и я хотел бы иметь возможность удалять все данные в том или ином типе, когда мне это нужно.NEST ElasticSearch Тип удаления

Моя текущая идея состоит в том

ElasticClient.DeleteByQuery<ISearchData>(q => q.Index(indexName).Type(type.ToString()).Query(qu => qu.Bool(b => b.Must(m => m.MatchAll())))); 

Спасибо заранее.

+0

Возможный дубликат [ElasticSearch и НЕСТ: Как вы очистить все документы из индекса] (http://stackoverflow.com/questions/26917221/elasticsearch- и-nest-how-do-you-purge-all-documents-from-an-index) –

+0

@Jim G. легко удалить все документы из индекса. Мой вопрос был о типе. – Ekaterina

ответ

2

Попробуйте это:

var deleteByQuery = client.DeleteByQuery<Document>(d => d.MatchAll()); 

UPDATE:

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

client.DeleteByQuery<Document>(descriptor => descriptor.Type("type1").Query(q => q.MatchAll())); 

Мой пример:

client.Index(new Document {Id = 2}, descriptor => descriptor.Type("type1")); 
client.Index(new Document {Id = 1}, descriptor => descriptor.Type("type1")); 
client.Index(new Document {Id = 2}, descriptor => descriptor.Type("type2")); 

client.Refresh(); 

client.DeleteByQuery<Document>(descriptor => descriptor.Type("type1").Query(q => q.MatchAll())); 
+0

Спасибо за ответ. Но у меня есть документы того же типа C# в двух разных типах Elastic Search, поэтому, если я последую вашему предложению, я удалю оба моих типа, когда мне нужно удалить только один. – Ekaterina

+0

@ Ekaterina надеюсь, что мое обновление вам поможет. – Rob

+0

https://github.com/elastic/elasticsearch/pull/10239 прочитайте это! – danvasiloiu