我想从ElasticSearch中删除数据。我已经删除了索引。然而,这似乎并没有真正删除数据本身。我看到的其他东西指向通过查询删除功能。然而,我甚至不知道该问什么。我知道指数。本质上,我想知道如何做a
DELETE FROM [Index]
从邮递员在Chrome。然而,我没有任何运气。似乎无论我做什么,数据都不会消失。到目前为止,我已经成功地删除索引使用DELETE HTTP动词在邮差和使用一个url:
http://localhost:9200/[indexName]
然而,这似乎并没有真正删除数据(又名文档)本身。
您可以删除一个或多个索引,这实际上是从磁盘删除它们的文件。例如:
curl -XDELETE localhost:9200/$INDEXNAME
其中$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
或通过查询:
curl -XPOST -H 'Content-Type: application/json' localhost:9200/users_v2/_delete_by_query -d '{
"query": {
"match": {
"description_field": "bad user"
}
}
}'
您可以使用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。
一旦连接,您将能够管理您的整个集群,删除,优化和调优您的集群。
假设我需要删除索引filebeat-7.6.2-2020.04.30-000001,我使用curl delete选项执行它(curl -X delete "localhost:9200/filebeat-7.6.2-2020.04.30-000001?pretty"),并导致如下所示的身份验证问题;
{
"error" : {
"type" : "security_exception",
"reason" : "missing authentication credentials for REST request [/filebeat-7.6.2-2020.04.30-000001?pretty]"
},
"status" : 401
}
在这里,您应该使用为Elasticsearch提供的用户名和密码对curl请求进行身份验证。然后试着
curl -X DELETE -u myelasticuser:myelasticpassword "localhost:9200/filebeat-7.6.2-2020.04.30-000001?漂亮”
将导致{
“acknowledge”:正确
}。
您可以删除一个或多个索引,这实际上是从磁盘删除它们的文件。例如:
curl -XDELETE localhost:9200/$INDEXNAME
其中$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
或通过查询:
curl -XPOST -H 'Content-Type: application/json' localhost:9200/users_v2/_delete_by_query -d '{
"query": {
"match": {
"description_field": "bad user"
}
}
}'