ElasticSearch 서버의 모든 인덱스를 나열 하시겠습니까?
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"
}
모든 인덱스 목록을 원합니다 ..
클러스터에있는 모든 지수의 간결한 목록을 보려면
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 '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" : { ... }
}
}
_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
나는 이것을 사용하여 모든 지수를 얻는다.
$ 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
또한 사람이 읽을 수있는 인덱스 목록을 제공하는 / _cat / indices를 수행하는 것이 좋습니다.
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
}}
kibana에서 실행할 수있는 쿼리를 제공합니다.
GET /_cat/indices?v
CURL 버전은
CURL -XGET http://localhost:9200/_cat/indices?v
인덱스 만 목록을 얻는 가장 간단한 방법은 위의 답변을 'h = index'매개 변수와 함께 사용하는 것입니다.
curl -XGET "localhost:9200/_cat/indices?h=index"
_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" : { }
}
}
}
여기 사람들은 말과 의미로 그것을하는 방법에 대답했습니다. 일부 사람들은 이것을 자바로해야 할 수도 있습니다.
여기 간다
client.admin().indices().stats(new IndicesStatsRequest()).actionGet().getIndices().keySet()
이 cat API를 사용해보십시오 : 건강 및 기타 세부 정보가있는 모든 색인 목록을 제공합니다.
컬 -XGET http : // localhost : 9200 / _cat / indices
_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 + "]");
}
Kibana와 ES를 컴퓨터에 설치했습니다. 그러나 해당 시스템의 ES 노드 세부 사항 (어떤 경로 또는 포트)을 알지 못했습니다.
Kibana (버전 5.6)에서 어떻게 할 수 있습니까?
- 개발 도구로 이동
- 콘솔 섹션을 참조 하고 다음 쿼리를 실행하십시오.
GET _cat/indices
특정 ES 인덱스의 크기를 찾는 데 관심이있었습니다
You may use this command line.
curl -X GET "localhost : 9200 / _cat / indices? v"
더 (Elasticsearch 공식 사이트)
here's another way just to see the indices in the 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"}
One of the best way to list indices + to display its status together with list : is by simply executing below query.
Note: preferably use Sense to get the proper output.
curl -XGET 'http://localhost:9200/_cat/shards'
The sample output is as below. The main advantage is, it basically shows index name and the shards it saved into, index size and shards ip etc
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
...
...
...
If you're working in scala, a way to do this and use Future
's is to create a RequestExecutor, then use the IndicesStatsRequestBuilder and the administrative client to submit your request.
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
}
}
}
The executor is lifted from this blog post which is definitely a good read if you're trying to query ES programmatically and not through curl. One you have this you can create a list of all indexes pretty easily like so:
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
is an instance of Client which can be a node or a transport client, whichever suits your needs. You'll also need to have an implicit ExecutionContext
in scope for this request. If you try to compile this code without it then you'll get a warning from the scala compiler on how to get that if you don't have one imported already.
I needed the document count, but if you really only need the names of the indices you can pull them from the keys of the map instead of from the IndexStats
:
indicesStatsResponse.getIndices().keySet()
This question shows up when you're searching for how to do this even if you're trying to do this programmatically, so I hope this helps anyone looking to do this in scala/java. Otherwise, curl users can just do as the top answer says and use
curl http://localhost:9200/_aliases
You can also get specific index using
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"
}
}
}
}
For more info [https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html][1]
you can try this command
curl -X GET http://localhost:9200/_cat/indices?v
For Elasticsearch 6.X, I found the following the most helpful. Each provide different data in the response.
# 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
To list the indices you can do : curl 'localhost:9200/_cat/indices?v' Elasticsearch Documentation
참고URL : https://stackoverflow.com/questions/17426521/list-all-indexes-on-elasticsearch-server
'IT story' 카테고리의 다른 글
버전 전환을 허용하는 Mac OSX에 Java를 어떻게 설치합니까? (0) | 2020.04.29 |
---|---|
유형이 부울인지 확인하는 방법 (0) | 2020.04.29 |
Jade / Pug로 인라인 JavaScript를 어떻게 렌더링 할 수 있습니까? (0) | 2020.04.29 |
플라스크에 선택적 URL 매개 변수가 있습니까? (0) | 2020.04.29 |
구성 시스템을 초기화하지 못했습니다 (0) | 2020.04.29 |