340

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"
}

すべてのインデックスのリストが必要です..

4

23 に答える 23

134

試す

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
于 2015-05-13T19:59:55.447 に答える
39

クエリlocalhost:9200/_statusを実行すると、インデックスのリストとそれぞれについての情報が得られます。応答は次のようになります。

{
  "ok" : true,
  "_shards" : { ... },
  "indices" : {
    "my_index" : { ... },
    "another_index" : { ... }
  }
}
于 2013-07-02T14:07:05.247 に答える
32

_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インデックスをリストする機能を提供する小さなelasticsearchプラグインを作成しました。次の URL で見つけることができます。

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

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

于 2014-03-02T00:21:48.657 に答える
25

これを使用してすべてのインデックスを取得します。

$ 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

上記の 3 番目の列 (インデックスの名前) を取得するには:

$ 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

列ヘッダー

クエリの末尾に aを付け?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
于 2014-08-14T10:26:55.817 に答える
8
To get all the details in Kibana.
 GET /_cat/indices




To get names only in Kibana.
GET /_cat/indices?h=index

Kibana を使用せずに、postman で get リクエストを送信するか、Brower でこれを入力して、インデックス名のリストを取得できます。

http://localhost:9200/_cat/indices?h=index

ここに画像の説明を入力 ここに画像の説明を入力

于 2020-11-13T05:34:49.513 に答える
6

Curl を介した Secured Elastic Search へのアクセス (Update 2020)

が保護されている場合,Elastic Searchこのコマンドを使用してインデックスを一覧表示できます.

curl http://username:password@localhost:9200/_aliases?pretty=true
于 2020-02-06T06:58:25.927 に答える
2

ここの人々はcurlとsenseでそれを行う方法に答えました.Javaでこれを行う必要がある人もいるかもしれません.

ここに行きます

client.admin().indices().stats(new IndicesStatsRequest()).actionGet().getIndices().keySet()
于 2015-08-28T08:21:20.607 に答える
2

エンドポイントを使用して_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) によって作成されたこれらのガベージ インデックスをクリーンアップするために必要でした。

PS。コマンド ラインから ES を操作する場合は、 jqに慣れることを強くお勧めします。

于 2016-06-15T17:55:13.023 に答える
1

インデックスをリストし、そのステータスを list : とともに表示する最良の方法の 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                                                 
...
...
...
于 2016-06-01T16:33:41.847 に答える
1

scala で作業している場合、これを実行して を使用する方法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
        }
    }
}

executor は、curl ではなくプログラムで 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クライアントのインスタンスであり、ノードまたはトランスポート クライアントのどちらか必要に応じて使用できます。ExecutionContextまた、このリクエストの暗黙的な範囲も必要です。それなしでこのコードをコンパイルしようとすると、まだインポートされていない場合にそれを取得する方法について、scala コンパイラから警告が表示されます。

ドキュメント数が必要でしたが、本当にインデックスの名前だけが必要な場合は、 の代わりにマップのキーから取得できますIndexStats

indicesStatsResponse.getIndices().keySet()

この質問は、プログラムでこれを実行しようとしている場合でも、これを行う方法を検索しているときに表示されるため、scala/java でこれを実行しようとしている人に役立つことを願っています。それ以外の場合、カールユーザーは、一番上の回答が言うように実行して使用できます

curl http://localhost:9200/_aliases
于 2016-11-15T14:12:34.897 に答える
1

データベース内のインデックスを表示する別の方法を次に示します。

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"}
于 2014-05-20T18:03:12.160 に答える
1
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.4.0</version>
</dependency>

Java 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 + "]");
}
于 2016-09-10T15:14:36.223 に答える