从ElasticSearch中删除数据

use*_*554 317 elasticsearch

我是ElasticSearch的新手.我正在试图弄清楚如何从ElasticSearch中删除数据.我删除了索引.但是,这似乎并没有真正删除数据本身.我见过的其他内容指向" 按查询删除"功能.但是,我甚至不确定要查询什么.我知道我的索引.从本质上讲,我想弄清楚如何做一个

DELETE FROM [Index]
Run Code Online (Sandbox Code Playgroud)

来自Chrome中的PostMan.但是,我没有运气.似乎无论我做什么,数据都会悬而未决.到目前为止,我已经使用PostMan中的DELETE HTTP Verb成功删除了索引并使用了以下URL:

   http://localhost:9200/[indexName]
Run Code Online (Sandbox Code Playgroud)

但是,这似乎并没有实际删除数据(也就是文档)本身.

kha*_*kha 419

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

curl -X DELETE 'http://localhost:9200/_all'
Run Code Online (Sandbox Code Playgroud)

  • 这对于开发非常有用,需要重置为临时(空)数据库.谢谢!! (19认同)
  • 在你的bash_profile中为这个命令创建一个别名,它将派上用场进行开发. (3认同)
  • '不允许使用通配符表达式或所有索引' (2认同)
  • 请注意,这将删除所有数据,包括您的 x-pack 访问凭据。 (2认同)
  • 这也将删除Kibana仪表板和可视化 (2认同)

Nat*_*han 378

您可以使用cURL或直观地使用开源爱好者为Elasticsearch创建的众多工具之一进行删除.

使用cURL

curl -XDELETE localhost:9200/index/type/documentID
Run Code Online (Sandbox Code Playgroud)

例如

curl -XDELETE localhost:9200/shop/product/1
Run Code Online (Sandbox Code Playgroud)

然后,您将收到有关这是否成功的回复.您也可以使用索引删除整个索引或类型,您可以通过省略文档ID来删除类型 -

curl -XDELETE localhost:9200/shop/product
Run Code Online (Sandbox Code Playgroud)

如果您想删除索引 -

curl -XDELETE localhost:9200/shop
Run Code Online (Sandbox Code Playgroud)

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

curl -XDELETE localhost:9200/.mar* 
Run Code Online (Sandbox Code Playgroud)

目视

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

连接后,您将能够管理整个群集,删除,优化和调整群集.

  • 如何删除具有无效字符的索引,例如logstash-eu - %{customer} -2016.11.22.我想删除所有索引logstash-eu - %{customer} - *或logstash-eu - %* (2认同)

sko*_*kin 52

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

curl -XDELETE 'http://localhost:9200/*'
Run Code Online (Sandbox Code Playgroud)

还有一个重要的注意事项:

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

action.destructive_requires_name: true


小智 29

你必须发送一个DELETE请求

http://[your_host]:9200/[your_index_name_here]
Run Code Online (Sandbox Code Playgroud)

您还可以删除单个文档:

http://[your_host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id]
Run Code Online (Sandbox Code Playgroud)

我建议你使用弹力锤.

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

祝好运!


sha*_*raf 16

删除索引将删除映射并键入.您可以通过以下查询删除所有行

curl -XDELETE 'localhost:9200/twitter/tweet/_query?pretty' -d'
{
   "query": { 
      "match_all": 
   }
}'
Run Code Online (Sandbox Code Playgroud)

但是对于上面的查询,你需要安装按查询删除插件,因为Elasticsearch的2.0.0-beta1从主api删除了逐个查询

Install delete-by-query plugin

sudo bin/plugin install delete-by-query
Run Code Online (Sandbox Code Playgroud)

更多

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


Vik*_*han 14

curl -X DELETE 'https://localhost:9200/_all'
Run Code Online (Sandbox Code Playgroud)

如果您在应用程序中使用 SSL 证书,请更改httphttps


ysk*_*ysk 11

#list all index:       curl -XGET http://localhost:9200/_cat/indices?v 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

#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'
Run Code Online (Sandbox Code Playgroud)

安装kibana.Kibana有一个更智能的开发工具,可以帮助您轻松构建查询.

在此输入图像描述


FCh*_*iri 11

您可以通过 Kibana Console 删除索引:

控制台图标

获取所有索引:

GET /_cat/indices?v
Run Code Online (Sandbox Code Playgroud)

要删除特定索引:

DELETE /INDEX_NAME_TO_DELETE
Run Code Online (Sandbox Code Playgroud)


Pra*_*H G 11

1.删​​除API

从指定索引中删除文档。

DELETE /<index>/_doc/<_id>
Run Code Online (Sandbox Code Playgroud)

例子:

DELETE http://localhost:9200/my-index-000001/_doc/1
Run Code Online (Sandbox Code Playgroud)

参考:ES指南>>删除API

2.通过查询API删除

删除与指定查询匹配的文档。

例子:

POST http://localhost:9200/my-index-000001/_delete_by_query
{
  "query": {
      "match": {
           "user.id": "elkbee"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

参考:ES指南>>通过查询API删除


小智 9

列出索引 curl -L localhost:9200/_cat/indices

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

您可能会发现所有以logstash-yyyy-mm-ddformat(logstash-*)开头的索引

您可以查看所有索引并使用

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

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


Hub*_*tus 7

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

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
Run Code Online (Sandbox Code Playgroud)

历史上曾删除过API,然后又重新引入了

谁很有趣,历史悠久。

  1. 在该答案的第一个版本中,我指的是Elasticsearch 1.6版的文档。在该功能中,该功能被标记为已弃用,但效果很好。
  2. Elasticsearch 2.0版中,它已移至单独的插件。甚至解释了为什么它成为插件的原因。
  3. 再次出现在5.0版的核心API中

  • 请小心使用按查询删除。不推荐使用它的主要原因是。OutOfMemoryError! (3认同)

小智 7

您可以按如下所示在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')
Run Code Online (Sandbox Code Playgroud)


小智 6

我想删除logstash索引并搜索了很多关于curl等不同工具的信息。但最后找到了解决方案。登录 Kibana。转到开发工具选项卡并输入DELETE /logstash-*查询字段并点击绿色箭头按钮。如果您得到 "acknowledged": true 响应,则表示数据已被清除。


Edw*_*kwu 6

最简单的方法!

Endpoint :
http://localhost:9201/twitter/_delete_by_query

Payload :
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

twitter弹性搜索的索引在哪里

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


Gau*_*rav 6

您可以删除整个索引、文档类型或特定的 id 数据。这是三种方式:

  1. curl -XDELETE 本地主机:9200/index_name

  2. curl -XDELETE 本地主机:9200/index_name/doc-type

  3. curl -XDELETE 本地主机:9200/index_name/doc-type/documentId

如果您想删除所有索引,请使用通配符。


小智 6

您可以删除一个或多个索引,这实际上会从磁盘中删除它们的文件。例如:

curl -XDELETE localhost:9200/$INDEXNAME
Run Code Online (Sandbox Code Playgroud)

其中$INDEXNAME可以是索引名称(例如users_v2),N 个索引以逗号​​分隔(例如users_v2,users_v3)。索引模式(例如users_*)或_all, 也可以工作,除非它在配置中通过 被阻止action.destructive_requires_name: true

可以删除单个文档,但这不会立即清除它们。删除只是软删除,文档在段合并期间被真正删除。您将在此演示文稿中找到有关分段和合并的大量详细信息。它与 Solr 相关,但合并来自 Lucene,因此您在 Elasticsearch 中具有相同的选项。

回到 API,您可以通过 ID 删除单个文档(如果您使用路由建立索引,请提供路由值):

curl -XDELETE localhost:9200/users_v2/_doc/user1
Run Code Online (Sandbox Code Playgroud)

或者通过查询:

curl -XPOST -H 'Content-Type: application/json' localhost:9200/users_v2/_delete_by_query -d '{
  "query": {
    "match": {
      "description_field": "bad user"
    }
  }
}'
Run Code Online (Sandbox Code Playgroud)


Fac*_*cca 5

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

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

  • 在 AWS ES 上,您无法打开/关闭索引 - 这需要重新索引。但是,您可以删除索引。我只通过 Kibana 控制台完成此操作,但它确实有效。 (2认同)

小智 5

我使用开发工具删除数据

POST <index_name>/_delete_by_query
  {
   "query": {
       "match_all": {}
    }
 }
Run Code Online (Sandbox Code Playgroud)

例子

POST vehicle-data/_delete_by_query
      {
       "query": {
           "match_all": {}
        }
     }
Run Code Online (Sandbox Code Playgroud)