我想从ElasticSearch中删除数据。我已经删除了索引。然而,这似乎并没有真正删除数据本身。我看到的其他东西指向通过查询删除功能。然而,我甚至不知道该问什么。我知道指数。本质上,我想知道如何做a

DELETE FROM [Index]

从邮递员在Chrome。然而,我没有任何运气。似乎无论我做什么,数据都不会消失。到目前为止,我已经成功地删除索引使用DELETE HTTP动词在邮差和使用一个url:

   http://localhost:9200/[indexName]

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


当前回答

在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')

其他回答

您可以使用cURL或使用开源爱好者为Elasticsearch创建的许多工具中的任何一个进行可视化删除。

使用旋度

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

e.g.

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

然后,您将收到关于此操作是否成功的回复。你可以删除整个索引,也可以删除带有索引的类型,你也可以删除一个类型,就像这样,去掉文档ID

curl -XDELETE localhost:9200/shop/product

如果您希望删除索引-

curl -XDELETE localhost:9200/shop

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

curl -XDELETE localhost:9200/.mar* 

在视觉上

上面提到了各种各样的工具,我不会在这里列出它们,但我会链接到一个可以让你直接开始的工具,位于这里。这个工具被称为KOPF,要连接到您的主机,请单击左上角的标志,并输入您的集群的URL。

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

把指数列出来 curl -L localhost:9200/_cat/ indexes

9200默认端口[如果使用其他端口则更改端口]

您可能会发现所有索引都以logstash-yyyy-mm-dd格式开头(logstash-*)

你可以看到所有的索引和使用

使用以下命令删除索引和数据触发器。

curl -XDELETE localhost:9200/index_name(这将同时删除数据和索引)。

可以通过Kibana Console删除索引:

获取所有索引:

GET /_cat/indices?v

删除指定索引。

DELETE /INDEX_NAME_TO_DELETE

添加delete_by_query建议,如果您想快速删除给定索引中的所有记录,设置scroll_size和conflicts参数可能也很重要。

滚动的大小 在尝试同时删除多个文档时,使用较小的滚动尺寸以避免请求超时是很有用的。 冲突 在批量删除过程中忽略冲突是很有用的,因为如果一次删除太多记录,版本冲突是很常见的。


 POST http://localhost:9200/my-index-000001/_delete_by_query?scroll_size=100&conflicts=proceed
 {
   "query": {
       "match_all": {}
    }
 }

对于批量按查询删除,你可以使用特殊的按查询删除API:

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

在历史上,该API被删除,然后又重新引入

谁有趣,它有悠久的历史。

在这个答案的第一个版本中,我参考了elasticsearch版本1.6的文档。在这篇文章中,该功能被标记为已弃用,但运行良好。 在elasticsearch 2.0版本中,它被移动到单独的插件中。甚至解释了为什么它成为插件的原因。 它再次出现在5.0版的核心API中!