2017-10-02 15 views
0

私は必要な情報を取得するcurlコマンドを知っています。私は必要なものElasticsearch Java APIインデックスのドキュメント数

curl localhost:9200/_cat/indices/alerts* 

と出力が

yellow open alerts_1502744517_1 5 1 25 0 642.3kb 642.3kb 
yellow open alerts_1502744517_0 5 1 25 0 741.8kb 741.8kb 
yellow open alerts_1502744882_0 5 1 27 0 679.8kb 679.8kb 

では、インデックス名と、この場合には6列目(25、25、および27)である文書数、です。 Java APIを使用して同等の呼び出しを行うにはどうすればよいですか?

答えて

0

私は1つの方法は、それらすべてをトラバースし、各指標のカウントを取得する次に、すべてのインデックス

String[] indices = client.admin() 
          .cluster().prepareState().get() 
          .getState().getMetaData() 
          .getConcreteAllIndices() 

を取得することだと思います。 RestIndicesAction.javaまたはcat package

+0

を持っているなら、私に知らせてい名前とドキュメントの数がすべて1つになるため、各インデックスのクエリを続ける必要はありません。 – flareback

+0

cat REST APIの2番目のオプションは、1つのクエリでそれを行うことができます。 –

0

は、私がしようとしていませんが、baeldungstackoverflow上のいくつかの研究の後:

を使用すると、REST呼び出しを行いたい場合は、このクラスに見てみましょう。私はここで

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

このMavenの依存関係を使用して仕事ができるソリューションは、コードが

Node node = nodeBuilder() 
    .clusterName("elasticsearch") 
    .client(true).node(); 
Client client = node.client(); 
SearchResponse response = client.prepareSearch("my-index") 
    .setTypes("my-type") 
    .setSearchType(SearchType.QUERY_AND_FETCH) 
    .setFetchSource(new String[]{"field1", "field2"}, null) 
    .setQuery(QueryBuilders.termsQuery("field1", "1234")) 
    .execute() 
    .actionGet(); 

for (SearchHit hit : response.getHits()){ 
    Map map = hit.getSource(); 
    map.toString(); 
} 

であるあなたは、私がインデックスになるだろう、何かを期待していたすべてのエラー

関連する問題