我有以下格式的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_*"}
}
})
)
2条答案
按热度按时间hc2pp10m1#
通常,您应该使用delete by query 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字段Map为文本,以便执行全文搜索。
我希望我能帮助你。
4ngedf3f2#
取决于你的
id
Map,Mapprefix
查询也应该起作用: