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

6ojccjat  于 2023-06-21  发布在  ElasticSearch
关注(0)|答案(5)|浏览(214)

我知道如何delete an entire ElasticSearch index,但如何从索引中清除所有文档?
我的动机:我想有一个“ReIndex”方法,清除索引的整个内容,这样我就可以重新加载所有文档。
ElasticSearch语法会很有用。NEST语法会更好。

hlswsv35

hlswsv351#

我在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("*")))
);
ssm49v7z

ssm49v7z2#

您可以使用按查询删除。这将删除所有匹配 * 的文档,即一切

curl -XDELETE localhost:9200/<indexname>/_query?q=*
  • 将localhost更改为节点运行的主机名。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
不要忘了事后优化。

curl localhost:9200/<indexname>/_optimize
tvmytwxo

tvmytwxo3#

$ curl -XPOST localhost:9200/myindex/_optimize ....
优化过程将通过按查询删除来清除您所做的所有软删除。
我们也面临着一个类似的问题,我们删除了大量的文档。实际上,我们将大量的文档从一个索引移动到另一个索引,因为我们已经按日期对数据进行了分片。但是ES不支持将数据从一个索引移动到另一个索引。
但优化是一个昂贵的操作,因为它消耗了大量的IO寻道。如果你只是想做清除只是为了删除我想,那么你可以利用“只_expunge_deletes”标志合并段删除只。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-optimize.html

aamkag61

aamkag614#

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

amrnrhlw5#

使用ES v7.0.9删除索引名称。使用.AllIndices()或.Index(“_all”)代替.Index(“IndexName”)删除所有索引

await DeleteByQueryAsync<object>(q => q
          .Index("IndexName")
          .Query(rq => rq.MatchAll())
      );

相关问题