ElasticSearch NEST删除所有文档
本文关键字:文档 删除 NEST ElasticSearch | 更新日期: 2023-09-27 18:04:47
我使用的是ElastciSearch 2.3.0
我试图从ElasticSearch中删除文档,使用。net和NEST进行特定索引。
我只想删除所有的文档,不删除_mapping
DeleteByQueryRequest r = new DeleteByQueryRequest(new IndexName() { Name = indexName });
r.QueryOnQueryString = "*";
var response = client.DeleteByQuery(r);
我试图通过使用上面的代码来做到这一点,但它不工作。
请建议上面的代码有什么问题或如何做到这一点。
提前感谢您的帮助
不要使用delete by query从elastic 2.0开始就是一个插件,这是有原因的。你可以很容易地得到内存异常。您应该删除整个索引并重新创建映射
static void Main(string[] args)
{
ElasticClient db = new ElasticClient(new Uri("http://localhost.fiddler:9200"));
db.IndexMany(Enumerable.Range(0, 100).Select(i => new Data { Id = i, Name = "Name" + i }), "test_index");
var mappings = db.GetMapping<Data>();
var delete = db.DeleteIndex(new DeleteIndexRequest("test_index"));
var indexMapping = mappings.IndexTypeMappings["test_index"].ToDictionary(k => k.Key, v => (ITypeMapping)v.Value);
db.CreateIndex(new CreateIndexRequest("test_index")
{
Mappings = new Mappings(indexMapping)
});
Console.ReadLine();
}
class Data
{
public int Id { get; set; }
public string Name { get; set; }
}
索引的原始副本
var res = db.LowLevel.IndicesGetMapping<JObject>("test_index");
var delete = db.DeleteIndex(new DeleteIndexRequest("test_index"));
var mappings = res.Body["test_index"].ToString();
var create = db.LowLevel.IndicesCreate<JObject>("test_index", mappings);
如果您确实需要安装插件Sudo bin/plugin install delete-by-query
成功了。非常感谢。
var res = db.LowLevel.IndicesGetMapping<JObject>("test_index");
var delete = db.DeleteIndex(new DeleteIndexRequest("test_index"));
var mappings = res.Body["test_index"].ToString();
var create = db.LowLevel.IndicesCreate<JObject>("test_index", mappings);