[英]Delete documents by prefix from elastic search
我有以下格式的 JSON 文档,我想删除id
以users_
开头的文档。
{
"id": "users_1",
"name": "Adam"
}
一种方法是使用通配符获取所有文档,然后删除它们的 ID,但这需要两次请求。 有没有办法在单个字段上使用通配符删除?
我试过的解决方案是
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
查询也应该有效:
.../_delete_by_query
{
"query": {
"prefix": {
"id": {
"value": "users_"
}
}
}
}
通常,您应该使用按查询删除 API ( 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 字段映射为文本才能执行全文搜索。
我希望我能帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.