从ElasticSearch中删除数据

我是ElasticSearch的新手 。 我想弄清楚如何从ElasticSearch中删除数据。 我删除了我的索引。 但是,这似乎并没有真正删除数据本身。 我见过的其他东西指向按查询删除function。 但是,我甚至不知道要查询什么。 我知道我的索引。 本质上,我想弄清楚如何做一个

DELETE FROM [Index] 

从Chrome中的PostMan。 但是,我没有任何运气。 数据似乎无论我做什么,数据悬而未决。 到目前为止,我已经通过在PostMan中使用DELETE HTTP动词并使用如下URL来成功删除索引:

  http://localhost:9200/[indexName] 

但是,这似乎并没有真正删除数据(又名文档)本身。

您可以使用cURL进行删除,也可以使用开源爱好者为Elasticsearch创build的众多工具之一进行可视化删除。

使用cURL

 curl -XDELETE localhost:9200/index/type/documentID 

例如

 curl -XDELETE localhost:9200/shop/product/1 

然后你会收到一个关于这是否成功的答复。 您也可以删除整个索引或带有索引的types,您可以通过删除文件ID来删除types –

 curl -XDELETE localhost:9200/shop/product 

如果你想删除一个索引 –

 curl -XDELETE localhost:9200/shop 

如果您希望删除多个遵循特定命名约定的索引(请注意* ,通配符)

 curl -XDELETE localhost:9200/.mar* 

目视

有上面提到的各种工具,我不会在这里列出他们,但我会把你连接到一个让你立即开始,位于这里 。 这个工具被称为KOPF,连接到您的主机请点击左上angular的标志,并input您的群集的URL。

一旦连接,您将能够pipe理您的整个群集,删除,优化和调整您的群集。

如果你需要删除所有的索引,这可能会派上用场:

 curl -X DELETE 'http://localhost:9200/_all' 

文档 (或权威指南 )说,你也可以使用下一个查询删除所有索引:

curl -XDELETE 'http://localhost:9200/*'

还有一个重要的提示:

对于某些人来说,使用单个命令删除所有数据的能力是一个非常可怕的前景。 如果您想消除意外批量删除的可能性,可以在您的elasticsearch.yml中将以下设置为true

action.destructive_requires_name: true

你必须发送一个DELETE请求

 http://[your_host]:9200/[your_index_name_here] 

您也可以删除单个文档:

 http://[your_host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id] 

我build议你使用弹性锤 。

删除后,您可以查看索引是否仍然存在,并使用以下URL: http://[your_host]:9200/_stats/

祝你好运!

删除索引将删除映射和types。 您可以通过以下查询删除所有行

 curl -XDELETE 'localhost:9200/twitter/tweet/_query?pretty' -d' { "query": { "match_all": } }' 

但是对于上面的查询,你需要安装Elasticsearch的2.0.0-beta1删除查询插件从主API删除

 Install delete-by-query plugin sudo bin/plugin install delete-by-query 

更多

http://blog.appliedinformaticsinc.com/how-to-delete-elasticsearch-data-records-by-dsl-query/

这里有很多很好的答案,但也有一些我想补充的:

  • 如果您在AWS ElasticSearch服务上运行,则不能删除/删除索引而不是删除索引,你必须重新索引它们

对于通过查询进行批量删除,您可以使用特殊的API: https : //www.elastic.co/guide/en/elasticsearch/reference/1.6/docs-delete-by-query.html

虽然它被弃用,但它仍然可以工作,并且更容易批量删除。

你可以像下面这样删除python中的一个索引

 from elasticsearch import Elasticsearch es = Elasticsearch([{'host':'localhost', 'port':'9200'}]) es.index(index='grades',doc_type='ist_samester',id=1,body={ "Name":"Programming Fundamentals", "Grade":"A" }) es.indices.delete(index='grades') 
 #list all index: curl -XGET http://localhost:9200/_cat/indices?v 

在这里输入图像说明

 #delete index: curl -XDELETE 'localhost:9200/index_name' #delete all indices: curl -XDELETE 'localhost:9200/_all' #delete document : curl -XDELETE 'localhost:9200/index_name/type_name/document_id' 

安装kibana 。 Kibana有一个更聪明的开发工具,这有助于轻松构build查询。

在这里输入图像说明

最简单的方法!

 Endpoint : http://localhost:9201/twitter/_delete_by_query Payload : { "query": { "match": { "message": "some message" } } } 

twitter是弹性search的指标

参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

我想删除logstash索引,并search了很多不同的工具,如curl。 但最终find了解决办法。 login到Kibana。 转到开发工具选项卡,并在查询字段中键入DELETE /logstash-* ,然后按绿色箭头button。 如果您得到“确认”:在响应中为true意味着数据已被清除。

 You can delete either whole index,doc-type or a perticular id data. these are the three ways: 1. curl -XDELETE localhost:9200/index_name 2. curl -XDELETE localhost:9200/index_name/doc-type 3. curl -XDELETE localhost:9200/index_name/doc-type/documentId and if you wish to delete all the index then go for wildcard. 

使用curl: –

1)从索引中删除一个文件

 curl -XDELETE 'localhost:9200/indexName/type/documentId?pretty&pretty' 

例如: curl -XDELETE 'localhost:9200/mentorz/users/10557?pretty&pretty'

2)删除整个索引: –

 curl -XDELETE 'localhost:9200/indexName?pretty&pretty' 

例如: curl -XDELETE 'localhost:9200/mentorz?pretty&pretty'

欲了解更多的细节,你可以在这里find – https://www.elastic.co/guide/en/elasticsearch/reference/current/_deleting_documents.html