我想使用 python 删除 ES 中的一些数据
使用代码:
query={"query":
{"bool":
{"must": [{"match_phrase_prefix": {"docker_image_long_name": iname}},
{"match_phrase_prefix": {"timestamp": crawl_time}}]}}}
doc = es.delete_by_query(index=c_index,doc_type='framedata', body=query)
print doc
结果:
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 490, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 491, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 492, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 493, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 494, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 495, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 496, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 497, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 498, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 499, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 500, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 501, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 502, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 503, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 504, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 505, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 506, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 507, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 508, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 509, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 510, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 511, u'_index': u'crawledframe-2018.04.13'}
{u'_type': u'framedata', u'_id': u'_delete_by_query', u'created': False, u'_version': 512, u'_index': u'crawledframe-2018.04.13'}
但是,数据总数不会更改。
我的 ES 版本是 1.7.5。
如何使用查询删除文档?
是否需要更改任何设置才能使用删除?
问题是你的 ES 服务器是 1.7.5,而你使用的 Python 客户端库是 6.2.0,所以它不兼容。
您有以下几种选择:
一个。您可以将 ES 服务器升级到 6.2.0 并复制您的数据
二.您可以将 Python 客户端库降级到 1.7.0、1.8.0 或 1.9.0
三.您可以使用以下命令删除带有 curl 的数据:
curl -XDELETE localhost:9200/c_index/framedata/_query -d '{
"query": {
"bool": {
"must": [
{
"match_phrase_prefix": {
"docker_image_long_name": "<replace-me>"
}
},
{
"match_phrase_prefix": {
"timestamp": "<replace-me>"
}
}
]
}
}
}'