如何在python-elasticsearch中获取所有索引的列表

hgc7kmma  于 2023-01-29  发布在  Python
关注(0)|答案(9)|浏览(319)

如何在Python中得到一个索引名列表?下面是我目前所拥有的列表:

>>> es=e.es
>>> es
<Elasticsearch([{'host': '14555f777d8097.us-east-1.aws.found.io', 'port': 9200}])>
>>> es.indices
<elasticsearch.client.indices.IndicesClient object at 0x10de86790>
# how to get a list of all indexes in this cluster?
ca1c2owp

ca1c2owp1#

如何获得这个簇中所有索引的列表?
使用通配符。与elasticsearch-py一起使用。

for index in es.indices.get('*'):
  print index
ktca8awb

ktca8awb2#

下面是使用get_alias()方法执行此操作的一种方法:

>>> indices=es.indices.get_alias().keys()
>>> sorted(indices)
[u'avails', u'hey', u'kibana-int']
hc2pp10m

hc2pp10m3#

如果你愿意使用pyelasticsearch module,他们支持GET _mapping命令,这个命令可以生成集群的模式。这将允许你查看索引,并深入到每个索引中查看doc_types,以及它们的字段等。

import pyelasticsearch as pyes
es = pyes.ElasticSearch(["http://hostname0:9200", "http://hostname1:9200"]) ## don't accidentally type Elasticsearch, the class from the other two modules
schema = es.get_mapping() ## python dict with the map of the cluster

为了只获得索引列表,

indices_full_list = schema.keys()
just_indices = [index for index in indices_full_list if not index.startswith(".")] ## remove the objects created by marvel, e.g. ".marvel-date"

这与this question有关

2eafrhcq

2eafrhcq4#

您可以使用Cat API:es.cat.indices(h='index', s='index').split()

kuuvgm7e

kuuvgm7e5#

我使用curl调用stats API并获取有关索引的信息,然后解析返回的JSON对象以查找索引名称。

curl localhost:9200/_stats

在Python中,你可以使用requests库来调用curl,我不知道用Elasticsearch或Elasticsearch-DSL Python库来做这件事的方法。

t2a7ltrp

t2a7ltrp6#

你可以通过get _mapping来获取所有索引的列表。

requests.get(full_elastic_url + "/_mapping")
ndh0cuux

ndh0cuux7#

_cat API似乎是正确的方法,因为_aliases的方法很快就会被elasticsearch删除,因为它公开了系统索引。

indices = es.cat.indices(h='index', s='index').split()

它帮了我的忙。

bejyjqdl

bejyjqdl8#

如果您想要“别名”而不是“索引名”,这里有一个完美的解决方案:

response = es.indices.get(indexname)
alias_names = list(response[indexname]['aliases'].keys())

alias_names中,我们得到一个特定索引的别名列表。

kxkpmulp

kxkpmulp9#

这个问题是在搜索使用python-elasticsearch库检索aliases的信息时出现的。可接受的答案是使用get_aliases,但该方法已被删除(截至2017年)。要获得aliases,您可以使用以下命令:

es.indices.get_alias("*")
    • 更新**

最新的用法应该是使用关键字arg:

es.indices.get_alias(index="*")

相关问题