C# ElasticSearch和NEST:如何从索引中清除所有文档?
我知道怎么做,但如何从索引中清除所有文档 我的动机是:我希望有一个“ReIndex”方法来清除索引的全部内容,这样我就可以重新加载所有文档C# ElasticSearch和NEST:如何从索引中清除所有文档?,c#,elasticsearch,nest,C#,elasticsearch,Nest,我知道怎么做,但如何从索引中清除所有文档 我的动机是:我希望有一个“ReIndex”方法来清除索引的全部内容,这样我就可以重新加载所有文档 ElasticSearch语法将非常有用。嵌套语法会更好。您可以使用deleteby查询。这将删除所有匹配*的文档,即所有文档 curl -XDELETE localhost:9200/<indexname>/_query?q=* curl-XDELETE localhost:9200/\u query?q=* 将localhost更改为运
ElasticSearch语法将非常有用。嵌套语法会更好。您可以使用deleteby查询。这将删除所有匹配*的文档,即所有文档
curl -XDELETE localhost:9200/<indexname>/_query?q=*
curl-XDELETE localhost:9200/\u query?q=*
- 将localhost更改为运行节点的主机名
curl localhost:9200/<indexname>/_optimize
curl localhost:9200/\u
$curl-XPOST localhost:9200/myindex/\u optimize
优化过程将通过“按查询删除”清除您完成的所有软删除
我们还面临着一个类似的问题,我们删除了很多文档。实际上,我们将很多文档从一个索引移动到另一个索引,因为我们按日期分割数据。但as ES不支持将数据从一个索引移动到另一个索引
但是,优化是一项成本高昂的操作,因为它需要消耗大量的IO。如果您只想对删除进行清除,我想您可以使用“only_expunge_deletes”标志将段与deletes only合并
我在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("*")))
);
var节点=新Uri(“http://localhost:9200");
var设置=新连接设置(节点);
var客户端=新的ElasticClient(设置);
client.DeleteByQuery(del=>del
.Query(q=>q.QueryString(qs=>qs.Query(“*”))
);
**删除所有记录-**
client.DeleteByQuery(del=>del
.Query(q=>q.QueryString(qs=>qs.Query(“*”))
));
**删除索引-**
client.DeleteIndex(d=>d.Index(“Index_name”);
DeleteByQuery现在已不推荐使用。任何一个在Nest 2版本中获得最新语法的人?@Linoy.M.Kunjappan DeleteByQuery不再被反对。如前所述,“DBQ最初被弃用,并从Elasticsearch本身中删除,然后他们用一个新的实现将其带回来。”。看起来是个不错的替代品。这是一个需要指定T
的通用表单。如果我想删除所有索引和所有类型的表单,该怎么办?
**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"));