Elasticsearch:如何使用python删除索引

Abt*_*Pst 53 python python-2.7 elasticsearch

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

es.delete(index='researchtest', doc_type='test')
Run Code Online (Sandbox Code Playgroud)

但这给了我

return func(*args, params=params, **kwargs)
TypeError: delete() takes at least 4 arguments (4 given)
Run Code Online (Sandbox Code Playgroud)

我也试过了

es.delete_by_query(index='researchtest', doc_type='test',body='{"query":{"match_all":{}}}')
Run Code Online (Sandbox Code Playgroud)

但我明白了

AttributeError: 'Elasticsearch' object has no attribute 'delete_by_query'
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?对于python,api是否改为2.1.1?

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

fer*_*rdy 90

从文档中,使用此表示法:

from elasticsearch import Elasticsearch
es = Elasticsearch()

es.indices.delete(index='test-index', ignore=[400, 404])
Run Code Online (Sandbox Code Playgroud)

  • @LukAron,如果您试图删除不存在的索引 (2认同)
  • 此命令返回 ElasticSearch python 客户端 8+ 的弃用警告消息。因此,ES 8+ 的替代方案是:``es.options(ignore_status=[400,404]).indices.delete(index='test-index')``` (2认同)

Kas*_*mvd 9

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

ClassName._index.delete()
Run Code Online (Sandbox Code Playgroud)

也正如文档中所述

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

Post._index.load_mappings()
Run Code Online (Sandbox Code Playgroud)