【问题标题】:Delete specific docs in elasticsearch using python使用python删除elasticsearch中的特定文档
【发布时间】:2018-01-04 18:38:16
【问题描述】:

我是 ElasticSearch 的新手。我正在尝试使用 python 从 http://localhost:9200/es_index/es_type 中删除一组数据。

假设 x=['a','b','c','d','e','f'] 是我要删除的 _ids 列表

代码:

from elasticsearch import Elasticsearch 
es = Elasticsearch()
request_body = {
        "query": {
            "ids": {
                "values": ['a','b','c','d','e','f']
            }
        }
    }
es.delete_by_query(index=es_index, body=request_body)

但是当我检查 http://localhost:9200/es_index/es_type 时,数据仍然存在。

【问题讨论】:

  • 你运行的是哪个版本的 ES?
  • 版本为6.1.0
  • elasticsearch-py是哪个版本的?

标签: python elasticsearch


【解决方案1】:

请在 cmets 中指定您的 ES 和 elasticsearch-py 版本。此外,您忘记在代码中提及 es_index 的值,因此请确保传递正确的值。

如果索引设置正确,delete_by_query 的问题通常来自查询本身。尝试使用相同的主体运行一个简单的search,并检查您是否获得了所需的结果。这样做总是明智的,以防止错误。

在您的情况下,您知道 id,因此使用 es.delete 并传递 id 值更合适:

for id in ids:
    es.delete(es_index=index, doc_type=_type, id=id)

对于许多文档,您应该考虑使用bulk 助手来提高性能。请参阅答案here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多