【问题标题】:Elasticsearch : How to delete an Index using pythonElasticsearch:如何使用 python 删除索引
【发布时间】:2016-05-10 02:50:34
【问题描述】:

如果这是非常基本的,请原谅我,但我有 Python 2.7 和 Elasticsearch 2.1.1,我只是想使用删除索引

es.delete(index='researchtest', doc_type='test')

但这给了我

return func(*args, params=params, **kwargs)
TypeError: delete() takes at least 4 arguments (4 given)

我也试过了

es.delete_by_query(index='researchtest', doc_type='test',body='{"query":{"match_all":{}}}')

但我明白了

AttributeError: 'Elasticsearch' object has no attribute 'delete_by_query'

知道为什么吗? python 的 2.1.1 的 api 是否已更改?

https://elasticsearch-py.readthedocs.org/en/master/api.html#elasticsearch.client.IndicesClient.delete

【问题讨论】:

    标签: python python-2.7 elasticsearch


    【解决方案1】:

    从文档中,使用这个符号:

    from elasticsearch import Elasticsearch
    es = Elasticsearch()
    
    es.indices.delete(index='test-index', ignore=[400, 404])
    

    【讨论】:

    • 忽略有用吗?
    • @LukAron 如果您尝试删除不存在的索引
    【解决方案2】:

    如果您有一个文档对象(模型)并且您正在使用 elasticsearch-dsl,特别是对于 Python-3.X,您可以直接调用模型的 _index 属性的 delete 方法。

    ClassName._index.delete()
    

    同样是stated in documentation:

    _index 属性也是 load_mappings 方法的所在地,该方法将从 elasticsearch 更新索引上的映射。如果您使用动态映射并希望类了解这些字段(例如,如果您希望正确(反)序列化日期字段),这将非常有用:

    Post._index.load_mappings()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多