ElasticSearch 서버의 모든 인덱스를 나열 하시겠습니까?


251

ElasticSearch 서버에있는 모든 인덱스를 나열하고 싶습니다. 나는 이것을 시도했다 :

curl -XGET localhost:9200/

그러나 그것은 단지 나에게 이것을 제공합니다 :

{
  "ok" : true,
  "status" : 200,
  "name" : "El Aguila",
  "version" : {
    "number" : "0.19.3",
    "snapshot_build" : false
  },
  "tagline" : "You Know, for Search"
}

모든 인덱스 목록을 원합니다 ..

답변:


407

클러스터에있는 모든 지수의 간결한 목록을 보려면

curl http://localhost:9200/_aliases

그러면 인덱스 목록과 해당 별칭이 표시됩니다.

예쁘게 인쇄하려면 다음을 추가하십시오 pretty=true.

curl http://localhost:9200/_aliases?pretty=true

인덱스가 호출되면 결과는 다음 old_deuteronomymungojerrie같습니다.

{
  "old_deuteronomy" : {
    "aliases" : { }
  },
  "mungojerrie" : {
    "aliases" : {
      "rumpleteazer" : { },
      "that_horrible_cat" : { }
    }
  }
}

5
@paweloque 답변은 이제 올바른 해결책 인 것 같습니다. 더 깨끗해 보인다. curl http://localhost:9200/_stats/indexes\?pretty\=1
notapatch

1
일반 (비 -json) 목록에 대한 내 2 센트 :curl -s localhost:9200/_aliases?pretty=true | awk -F\" '!/aliases/ && $2 != "" {print $2}'
Yaron

Elasticsearch 6.5 중 히트 /stats엔드 포인트 또는 PARAM와 건강 엔드 포인트_cluster/health?level=indices
저스틴 W.

로컬 호스트 : 9200 / _cat / 지수 V는? 저 (탄성 6.2.4)에 근무
매트 L.

78

시험

curl 'localhost:9200/_cat/indices?v'

그것은 당신에게 테이블 방식으로 자기 설명 출력을 제공 할 것입니다

health index    pri rep docs.count docs.deleted store.size pri.store.size
yellow customer   5   1          0            0       495b           495b

정렬 할 파이프를 추가하면 무엇이 녹색인지 쉽게 확인할 수있었습니다. 또한 store.size 변경은 추가 진행을 나타냅니다.
kevpie

예를 들어 & h = health, index를 추가하고 & s = health : desc를 사용하여 정렬하는 열을 선택하고 주문할 수도 있습니다.
Georg Engel

33

당신은 쿼리 할 수 ​​있으며 localhost:9200/_status, 각각에 대한 색인 및 정보 목록을 제공합니다. 응답은 다음과 같습니다.

{
  "ok" : true,
  "_shards" : { ... },
  "indices" : {
    "my_index" : { ... },
    "another_index" : { ... }
  }
}

3
인덱스 이름 목록을 알고 싶다면이 방법이 너무 느리고 느립니다. 더 나은 사용 -GET /_stats/indexes
asyncwait

4
@asyncwait /_stats/indices올바른 복수형이며 in /_status및 in에 사용되는 키이므로 권장 합니다 /_stats.
Nicholas Shanks

2
버전 5.6에서 더 이상 유효한 URL이 아닌 것 같습니다.
알 수없는 개발자

1
API 엔드 포인트로 변경 _nodes/stats하고 _nodes/status@KimberlyW
maxymoo

1.2.0에서 더 이상 사용되지 않습니다.
jarmod

26

_stats 명령은 원하는 메트릭을 지정하여 결과를 사용자 정의하는 방법을 제공합니다. 인덱스를 얻는 방법은 다음과 같습니다.

GET /_stats/indices

_stats쿼리 의 일반적인 형식 은 다음과 같습니다.

/_stats
/_stats/{metric}
/_stats/{metric}/{indexMetric}
/{index}/_stats
/{index}/_stats/{metric}

측정 항목이있는 위치 :

indices, docs, store, indexing, search, get, merge, 
refresh, flush, warmer, filter_cache, id_cache, 
percolate, segments, fielddata, completion

나 자신의 연습으로, 나는 다른 정보없이 탄성 검색 색인을 나열하는 기능을 제공하는 작은 elasticsearch 플러그인을 작성했습니다. 다음 URL에서 찾을 수 있습니다.

http://blog.iterativ.ch/2014/04/11/listindices-writing-your-first-elasticsearch-java-plugin/

https://github.com/iterativ/elasticsearch-listindices


2
작동하지 않습니다 :"type": "illegal_argument_exception", "reason": "request [/_stats/indices] contains unrecognized metric: [indices]"
Ivan Yurchenko

@IvanYurchenko 오래 전에 탄성 검색 플러그인을 구현했습니다. API가 변경되어 더 이상 작동하지 않을 가능성이 큽니다. '_aliases'명령을 사용하는 것이 가장 좋습니다. 또한 elasticsearch의 모든 지수에 대한 정보를 제공합니다.
paweloque

18

나는 이것을 사용하여 모든 지수를 얻는다.

$ curl --silent 'http://127.0.0.1:9200/_cat/indices' | cut -d\  -f3

이 목록으로 작업 할 수 있습니다 ...

$ curl -s 'http://localhost:9200/_cat/indices' | head -5
green open qa-abcdefq_1458925279526           1 6       0     0   1008b    144b
green open qa-test_learnq_1460483735129    1 6       0     0   1008b    144b
green open qa-testimportd_1458925361399       1 6       0     0   1008b    144b
green open qa-test123p_reports                1 6 3868280 25605   5.9gb 870.5mb
green open qa-dan050216p_1462220967543        1 6       0     0   1008b    144b

위의 세 번째 열 (지수 이름)을 얻으려면 :

$ curl -s 'http://localhost:9200/_cat/indices' | head -5 | cut -d\  -f3
qa-abcdefq_1458925279526
qa-test_learnq_1460483735129
qa-testimportd_1458925361399
qa-test123p_reports
qa-dan050216p_1462220967543

참고 :awk '{print $3}' 대신 사용할 수도 있습니다 cut -d\ -f3.

열 헤더

?v열 머리글을 추가하기 위해 쿼리에 접미사를 붙일 수도 있습니다 . 그렇게하면 cut...방법 이 중단 되므로이 awk..시점에서 선택을 사용하는 것이 좋습니다 .

$ curl -s 'http://localhost:9200/_cat/indices?v' | head -5
health status index                              pri rep docs.count docs.deleted store.size pri.store.size
green  open   qa-abcdefq_1458925279526             1   6          0            0      1008b           144b
green  open   qa-test_learnq_1460483735129      1   6          0            0      1008b           144b
green  open   qa-testimportd_1458925361399         1   6          0            0      1008b           144b
green  open   qa-test123p_reports                  1   6    3868280        25605      5.9gb        870.5mb

1
curl -s 'http://localhost:9200/_cat/indices?h=index'색인 이름 만 인쇄합니다. 열을 필터링하기 위해 쉘 트릭을 사용할 필요가 없습니다.
hgf

뿐만 아니라 당신은 AWK를 사용할 수 있습니다, 당신은 해야합니다 (또는 다른 사용 AWK를 사용 tr -s ' '하기 전에 cut공간의 응축 실행에) 또는 상태 인 경우 다른 사람은 인덱스 이름을받지 않습니다 red이 공간과 패딩되기 때문에 cut취급 단락 문자로 각각의 공간 "필드"가 비어있는 경우에도 새로운 필드
kbolino

11

또한 사람이 읽을 수있는 인덱스 목록을 제공하는 / _cat / indices를 수행하는 것이 좋습니다.


8

인덱스 만 목록을 얻는 가장 간단한 방법은 위의 답변을 'h = index'매개 변수와 함께 사용하는 것입니다.

curl -XGET "localhost:9200/_cat/indices?h=index"

7

curl -XGET 'http://localhost:9200/_cluster/health?level=indices'

이것은 아래와 같이 출력됩니다

{
  "cluster_name": "XXXXXX:name",
  "status": "green",
  "timed_out": false,
  "number_of_nodes": 3,
  "number_of_data_nodes": 3,
  "active_primary_shards": 199,
  "active_shards": 398,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 0,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 100,
  "indices": {
    "logstash-2017.06.19": {
      "status": "green",
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "active_primary_shards": 3,
      "active_shards": 6,
      "relocating_shards": 0,
      "initializing_shards": 0,
      "unassigned_shards": 0
    },
    "logstash-2017.06.18": {
      "status": "green",
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "active_primary_shards": 3,
      "active_shards": 6,
      "relocating_shards": 0,
      "initializing_shards": 0,
      "unassigned_shards": 0
    }}

다른 모든 끝점은 나를 위해 작동하지 않았습니다. 당신의 대답은 효과가있었습니다! 고마워.
arun

나도, 이것은 최신 버전의 것입니다. 주요 답변 2.X에서 제대로 작동하지만 6.x에서
앤드류 존 Dodds가

5

kibana에서 실행할 수있는 쿼리를 제공합니다.

GET /_cat/indices?v

CURL 버전은

CURL -XGET http://localhost:9200/_cat/indices?v

5
You may use this command line.

curl -X GET "localhost : 9200 / _cat / indices? v"

(Elasticsearch 공식 사이트)


3

수행 할 수있는 색인을 나열하려면 curl 'localhost : 9200 / _cat / indices? v'Elasticsearch 설명서


3

컬을 통해 보안 된 탄력적 검색에 액세스 (업데이트 2020)

이 경우 Elastic Search고정, 당신은 목록 인덱스에이 명령을 사용할 수 있습니다

curl http://username:password@localhost:9200/_aliases?pretty=true

2

_stats/indices로 결과를 제공합니다 indices.

$ curl -XGET "localhost:9200/_stats/indices?pretty=true"
{
  "_shards" : {
    "total" : 10,
    "successful" : 5,
    "failed" : 0
  },
  "_all" : {
    "primaries" : { },
    "total" : { }
  },
  "indices" : {
    "visitors" : {
      "primaries" : { },
      "total" : { }
    }
  }
}

2

여기 사람들은 말과 의미로 그것을하는 방법에 대답했습니다. 일부 사람들은 이것을 자바로해야 할 수도 있습니다.

여기 간다

client.admin().indices().stats(new IndicesStatsRequest()).actionGet().getIndices().keySet()


2

Elasticsearch 6.X의 경우 다음이 가장 유용한 것으로 나타났습니다. 각각은 응답에서 다른 데이터를 제공합니다.

# more verbose
curl -sS 'localhost:9200/_stats' | jq -C ".indices" | less

# less verbose, summary
curl -sS 'localhost:9200/_cluster/health?level=indices' | jq -C ".indices" | less

2

당신은 또한 사용하여 특정 색인을 얻을 수 있습니다

curl -X GET "localhost:9200/<INDEX_NAME>"
e.g.   curl -X GET "localhost:9200/twitter"
You may get output like:
{
  "twitter": {
     "aliases": { 

     },
     "mappings": { 

     },
     "settings": {
     "index": {
        "creation_date": "1540797250479",
        "number_of_shards": "3",
        "number_of_replicas": "2",
        "uuid": "CHYecky8Q-ijsoJbpXP95w",
        "version": {
            "created": "6040299"
        },
       "provided_name": "twitter"
      }
    }
  }
}

더 많은 정보를 위해서

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html


1

다음은 db의 인덱스를 보는 또 다른 방법입니다.

curl -sG somehost-dev.example.com:9200/_status --user "credentials:password" | sed 's/,/\n/g' | grep index | grep -v "size_in" | uniq


{ "index":"tmpdb"}

{ "index":"devapp"}

1

인덱스를 나열하고 목록과 함께 상태를 표시하는 가장 좋은 방법 중 하나는 아래 쿼리를 실행하는 것입니다.

참고 : 적절한 출력을 얻으려면 Sense를 사용하는 것이 좋습니다.

curl -XGET 'http://localhost:9200/_cat/shards'

샘플 출력은 다음과 같습니다. 주요 장점은 기본적으로 인덱스 이름과 저장된 샤드, 인덱스 크기 및 샤드 ip 등을 표시한다는 것입니다.

index1     0 p STARTED     173650  457.1mb 192.168.0.1 ip-192.168.0.1 
index1     0 r UNASSIGNED                                                 
index2     1 p STARTED     173435  456.6mb 192.168.0.1 ip-192.168.0.1 
index2     1 r UNASSIGNED                                                 
...
...
...

1

_stats/indexes끝점을 사용하여 json blob 데이터를 얻은 다음 jq 로 필터링 합니다.

curl 'localhost:9200/_stats/indexes' | jq '.indices | keys | .[]'

"admin"
"blazeds"
"cgi-bin"
"contacts_v1"
"flex2gateway"
"formmail"
"formmail.pl"
"gw"
...

따옴표를 원하지 않으면 -rjq에 플래그를 추가하십시오 .

예, 끝 점이 indexes있고 데이터 키가 indices이므로 마음을 구성 할 수 없었습니다. :)

내부 보안 검색 (nessus)으로 생성 된 이러한 가비지 인덱스를 정리하려면 이것이 필요했습니다.

추신. 커맨드 라인에서 ES와 상호 작용하려면 jq에 익숙해지는 것이 좋습니다 .


1
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.4.0</version>
</dependency>

자바 API

Settings settings = Settings.settingsBuilder().put("cluster.name", Consts.ES_CLUSTER_NAME).build();
TransportClient client = TransportClient.builder().settings(settings).build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("52.43.207.11"), 9300));
IndicesAdminClient indicesAdminClient = client.admin().indices();
GetIndexResponse getIndexResponse = indicesAdminClient.getIndex(new GetIndexRequest()).get();
for (String index : getIndexResponse.getIndices()) {
    logger.info("[index:" + index + "]");
}

코드에 대한 설명을 제공하고 답변을 좀 더 읽기 쉽게 만들 수 있습니다 ... 답변 방법
AgataB

1

스칼라에서 작업하는 경우이를 수행하고 사용하는 방법 Future은 RequestExecutor를 만든 다음 IndicesStatsRequestBuilder 와 관리 클라이언트를 사용하여 요청을 제출하는 것입니다.

import org.elasticsearch.action.{ ActionRequestBuilder, ActionListener, ActionResponse }
import scala.concurrent.{ Future, Promise, blocking }

/** Convenice wrapper for creating RequestExecutors */
object RequestExecutor {
    def apply[T <: ActionResponse](): RequestExecutor[T] = {
        new RequestExecutor[T]
    }
}

/** Wrapper to convert an ActionResponse into a scala Future
 *
 *  @see http://chris-zen.github.io/software/2015/05/10/elasticsearch-with-scala-and-akka.html
 */
class RequestExecutor[T <: ActionResponse] extends ActionListener[T] {
    private val promise = Promise[T]()

    def onResponse(response: T) {
        promise.success(response)
    }

    def onFailure(e: Throwable) {
        promise.failure(e)
    }

    def execute[RB <: ActionRequestBuilder[_, T, _, _]](request: RB): Future[T] = {
        blocking {
            request.execute(this)
            promise.future
        }
    }
}

이 블로그 게시물 에서 실행 프로그램이 해제되어 컬을 사용하지 않고 프로그래밍 방식으로 ES를 쿼리하려는 경우 확실히 읽을 수 있습니다. 이것을 가지고 있으면 다음과 같이 쉽게 모든 인덱스 목록을 만들 수 있습니다.

def totalCountsByIndexName(): Future[List[(String, Long)]] = {
    import scala.collection.JavaConverters._
    val statsRequestBuider = new IndicesStatsRequestBuilder(client.admin().indices())
    val futureStatResponse = RequestExecutor[IndicesStatsResponse].execute(statsRequestBuider)
    futureStatResponse.map { indicesStatsResponse =>
        indicesStatsResponse.getIndices().asScala.map {
            case (k, indexStats) => {
                val indexName = indexStats.getIndex()
                val totalCount = indexStats.getTotal().getDocs().getCount()
                    (indexName, totalCount)
                }
        }.toList
    }
}

client노드 또는 전송 클라이언트 중 하나가 될 수있는 Client 의 인스턴스입니다 . 또한 ExecutionContext이 요청에 대한 범위 가 암시 적이어야 합니다. 이 코드를 코드없이 컴파일하려고하면 스칼라 컴파일러에서 아직 가져 오지 않은 코드를 얻는 방법에 대한 경고 메시지가 표시됩니다.

나는 문서 수를 필요로했지만 실제로 색인의 이름 만 필요하면 IndexStats: 대신 맵의 키에서 가져올 수 있습니다 .

indicesStatsResponse.getIndices().keySet()

프로그래밍 방식 으로이 작업을 수행하려고 해도이 작업을 수행하는 방법을 검색 할 때이 질문이 표시되므로 scala / java 에서이 작업을 수행하는 사람이 도움이되기를 바랍니다. 그렇지 않으면 curl 사용자는 최상위 답변이 말하고 사용하는 것처럼 할 수 있습니다.

curl http://localhost:9200/_aliases

1

이 명령을 시도 할 수 있습니다

curl -X GET http : // localhost : 9200 / _cat / indices? v


1
안녕하세요, 간단한 메모입니다. 이것은 위의 답변에서 3 번에 가깝게 지정되었습니다. 이 답변을 편집하고 이전 답변에서 이전에 게시되지 않은 정보를 추가하지 않는 한 이미 제공된 반복 답변을 게시하지 마십시오. 나는 당신을 실망시키지 않기를 희망하지만 이것은 모든 질문과 답변이 반복되고 반복되지 않도록하기위한 것입니다.
Opster ES Ninja-Kamal

1

Kibana와 ES를 컴퓨터에 설치했습니다. 그러나 해당 시스템의 ES 노드 세부 사항 (어떤 경로 또는 포트)을 알지 못했습니다.

Kibana (버전 5.6)에서 어떻게 할 수 있습니까?

  • 개발 도구로 이동
  • 콘솔 섹션을 참조 하고 다음 쿼리를 실행하십시오.

GET _cat/indices

특정 ES 인덱스의 크기를 찾는 데 관심이있었습니다


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.