Comment puis-je obtenir une liste des noms d'un index en Python? Voici ce que j'ai jusqu'à présent:
>>> 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?
Cette question se pose lors de la recherche d'informations sur la récupération de aliases
à l'aide de python-elasticsearch
bibliothèque. La réponse acceptée dit d'utiliser get_aliases
mais cette méthode a été supprimée (à partir de 2017). Pour obtenir aliases
, vous pouvez utiliser ce qui suit:
es.indices.get_alias("*")
comment obtenir une liste de tous les index de ce cluster?
Utilisez le caractère générique. Fonctionne avec elasticsearch-py.
for index in es.indices.get('*'):
print index
Voici une façon de le faire avec la méthode get_alias()
:
>>> indices=es.indices.get_alias().keys()
>>> sorted(indices)
[u'avails', u'hey', u'kibana-int']
Si vous êtes prêt à utiliser module pyelasticsearch ils prennent en charge le GET _mapping
, qui produit le schéma du cluster. Cela vous permettra de voir les index et d'explorer chaque index pour voir les doc_types et leurs champs, etc. Voici un exemple:
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
Pour obtenir juste la liste des indices,
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"
Ceci est lié à cette question
J'utilise curl pour appeler l'API stats et obtenir des informations sur les indices. Ensuite, j'analyse l'objet JSON qui est retourné pour trouver les noms d'index.
curl localhost:9200/_stats
Dans Python vous pouvez appeler curl en utilisant la bibliothèque de requêtes. Je ne connais aucun moyen de le faire en utilisant Elasticsearch ou Elasticsearch-DSL Python bibliothèque.
Vous pouvez obtenir _mapping pour obtenir la liste de tous les index en faisant quelque chose comme ça.
requests.get(full_elastic_url + "/_mapping")