ES delete_by_query无法正常工作



我想使用 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>"
          }
        }
      ]
    }
  }
}'

最新更新