web-dev-qa-db-fra.com

Obtenir tous les noms d'index et de types à partir du cluster dans ElasticSearch

J'ai mon cluster et je veux connaître tous les noms d'index et de types qu'il contient. J'utilise Sense.

40
Smasell
curl -XGET 'http://localhost:9200/_cat/indices?v'

vous donnera tous les index.

curl -XGET 'http://localhost:9200/_mapping?pretty=true'

vous donnera les types de documents dans ces index, ainsi que leurs correspondances.

79
yvespeirsman

La réponse de yvespeirsman est correcte, mais si vous souhaitez uniquement voir les types d'index, vous pouvez utiliser jq pour obtenir une réponse plus compacte.

curl -s -XGET 'http://localhost:9200/_mapping' | jq 'to_entries | .[] | {(.key): .value.mappings | keys}'
30
Andrew White

Certains mappages sont trop volumineux pour utiliser efficacement le _mapping pour analyser les types. Considérons plutôt un agrégation . Serait probablement beaucoup plus rapide. Pour les index:

curl -XGET "http://localhost:9200/_search" -d'
{
  "aggs": {
    "indicesAgg": {
      "terms": {
        "field": "_index",
        "size": 200
      }
    }
  },
  "size": 0
}'

Et pour les types pour un index spécifique (ou pour obtenir tous les types dans tous les index, excluez simplement le nom de l'index {myIndex} dans l'URL):

curl -XGET "http://localhost:9200/myIndex/_search" -d'
{
  "aggs": {
    "typesAgg": {
      "terms": {
        "field": "_type",
        "size": 200
      }
    }
  },
  "size": 0
}'

Je suis sûr que vous pourriez écrire un seul agg pour renvoyer les deux aussi.

17
hubbardr

Pour obtenir tous les mappages dans l'index:

    GET /{index_name}/_search?size=50
    {
        "query": {
            "match_all": {}
        }
    }
0
GoingGeek