NEST ElasticSearch删除类型

时间:2015-05-21 07:46:51

标签: .net nest

如果有人告诉我使用NEST删除特定类型的所有数据的正确方法,我将非常感激。 我的弹性搜索中有一个索引和两种类型,我希望能够在需要时删除一种或另一种类型的所有数据。

我目前的想法是

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

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

更新:

如果您使用一个类来存储两种类型的文档,则可以使用.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()));