ES delete_by_query不起作用

时间:2018-04-13 05:27:16

标签: elasticsearch

我想使用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。

如何使用查询删除文档?

是否需要更改任何设置才能使用删除?

1 个答案:

答案 0 :(得分:0)

问题是您的ES服务器是1.7.5,而您使用的Python客户端库是6.2.0,因此它不兼容。

您有几个选择:

一个。您可以将ES服务器升级到6.2.0并复制数据

B中。您可以将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>"
          }
        }
      ]
    }
  }
}'