如果有人告诉我使用NEST删除特定类型的所有数据的正确方法,我将非常感激。 我的弹性搜索中有一个索引和两种类型,我希望能够在需要时删除一种或另一种类型的所有数据。
我目前的想法是
ElasticClient.DeleteByQuery<ISearchData>(q => q.Index(indexName).Type(type.ToString()).Query(qu => qu.Bool(b => b.Must(m => m.MatchAll()))));
提前致谢。
答案 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()));