Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ElasticSearch和NEST:如何从索引中清除所有文档?_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# ElasticSearch和NEST:如何从索引中清除所有文档?

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更改为运

我知道怎么做,但如何从索引中清除所有文档

我的动机是:我希望有一个“ReIndex”方法来清除索引的全部内容,这样我就可以重新加载所有文档


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"));