답변:
클러스터에있는 모든 지수의 간결한 목록을 보려면
curl http://localhost:9200/_aliases
그러면 인덱스 목록과 해당 별칭이 표시됩니다.
예쁘게 인쇄하려면 다음을 추가하십시오 pretty=true
.
curl http://localhost:9200/_aliases?pretty=true
인덱스가 호출되면 결과는 다음 old_deuteronomy
과 mungojerrie
같습니다.
{
"old_deuteronomy" : {
"aliases" : { }
},
"mungojerrie" : {
"aliases" : {
"rumpleteazer" : { },
"that_horrible_cat" : { }
}
}
}
curl -s localhost:9200/_aliases?pretty=true | awk -F\" '!/aliases/ && $2 != "" {print $2}'
/stats
엔드 포인트 또는 PARAM와 건강 엔드 포인트_cluster/health?level=indices
시험
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
당신은 쿼리 할 수 있으며 localhost:9200/_status
, 각각에 대한 색인 및 정보 목록을 제공합니다. 응답은 다음과 같습니다.
{
"ok" : true,
"_shards" : { ... },
"indices" : {
"my_index" : { ... },
"another_index" : { ... }
}
}
GET /_stats/indexes
/_stats/indices
올바른 복수형이며 in /_status
및 in에 사용되는 키이므로 권장 합니다 /_stats
.
_nodes/stats
하고 _nodes/status
@KimberlyW
_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/
"type": "illegal_argument_exception", "reason": "request [/_stats/indices] contains unrecognized metric: [indices]"
나는 이것을 사용하여 모든 지수를 얻는다.
$ 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
curl -s 'http://localhost:9200/_cat/indices?h=index'
색인 이름 만 인쇄합니다. 열을 필터링하기 위해 쉘 트릭을 사용할 필요가 없습니다.
tr -s ' '
하기 전에 cut
공간의 응축 실행에) 또는 상태 인 경우 다른 사람은 인덱스 이름을받지 않습니다 red
이 공간과 패딩되기 때문에 cut
취급 단락 문자로 각각의 공간 "필드"가 비어있는 경우에도 새로운 필드
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
}}
You may use this command line.
curl -X GET "localhost : 9200 / _cat / indices? v"
더 (Elasticsearch 공식 사이트)
여기 사람들은 말과 의미로 그것을하는 방법에 대답했습니다. 일부 사람들은 이것을 자바로해야 할 수도 있습니다.
여기 간다
client.admin().indices().stats(new IndicesStatsRequest()).actionGet().getIndices().keySet()
이 cat API를 사용해보십시오 : 건강 및 기타 세부 정보가있는 모든 색인 목록을 제공합니다.
당신은 또한 사용하여 특정 색인을 얻을 수 있습니다
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
인덱스를 나열하고 목록과 함께 상태를 표시하는 가장 좋은 방법 중 하나는 아래 쿼리를 실행하는 것입니다.
참고 : 적절한 출력을 얻으려면 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
...
...
...
_stats/indexes
끝점을 사용하여 json blob 데이터를 얻은 다음 jq 로 필터링 합니다.
curl 'localhost:9200/_stats/indexes' | jq '.indices | keys | .[]'
"admin"
"blazeds"
"cgi-bin"
"contacts_v1"
"flex2gateway"
"formmail"
"formmail.pl"
"gw"
...
따옴표를 원하지 않으면 -r
jq에 플래그를 추가하십시오 .
예, 끝 점이 indexes
있고 데이터 키가 indices
이므로 마음을 구성 할 수 없었습니다. :)
내부 보안 검색 (nessus)으로 생성 된 이러한 가비지 인덱스를 정리하려면 이것이 필요했습니다.
추신. 커맨드 라인에서 ES와 상호 작용하려면 jq에 익숙해지는 것이 좋습니다 .
<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 + "]");
}
스칼라에서 작업하는 경우이를 수행하고 사용하는 방법 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
이 명령을 시도 할 수 있습니다
curl -X GET http : // localhost : 9200 / _cat / indices? v
시스템에 curl이 설치되어 있으면 curl -XGET xx.xx.xx.xx : 9200 / _cat / indices? v 명령을 사용해보십시오.
위에서 언급 한 명령은 다음 형식으로 결과를 제공합니다. 모든 인덱스를 가져 오는 결과
curl http://localhost:9200/_stats/indexes\?pretty\=1