从弹性搜索中按前缀删除文档

问题描述 投票:0回答:3

我有以下格式的 JSON 文档,我想删除任何以

id
开头的文档。
users_

一种方法是使用通配符获取所有文档,然后删除它们的 ID,但这需要两个请求。有没有办法在单个字段上使用通配符进行删除?

我尝试过的解决方案是

{ "id": "users_1", "name": "Adam" }


python elasticsearch
3个回答
3
投票
requests.post( 'https://<some-project>.us-central1.gcp.cloud.es.io/api/as/v1/engines/<project-name>/_delete_by_query?conflicts=proceed&pretty', headers=header, data=json.dumps({ "query": { "match_all": {"ids": "users_*"} } }) )

映射,

id
查询也应该有效:
prefix



0
投票
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

),它可以让您(您猜到了)它!)删除与查询匹配的文档,而不必提前知道其文档 ID。 我建议针对您的特定用例使用前缀查询(

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html

)。然而,这需要将您的 id 字段映射为文本才能执行全文搜索。 希望能帮到你。


0
投票
POST /bars/_delete_by_query

.../_delete_by_query { "query": { "prefix": { "id": { "value": "users_" } } } }

回应:

{ "query": { "prefix": { "reference": { "value": "Auto-Colors-" } } } }

这意味着你的例子不起作用。也许你有一些更新?

© www.soinside.com 2019 - 2024. All rights reserved.