我知道curl命令来获取我需要的信息。
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 :(得分:0)
我认为一种方法是获得所有指数
String[] indices = client.admin()
.cluster().prepareState().get()
.getState().getMetaData()
.getConcreteAllIndices()
然后遍历它们并得到每个指数的计数。
如果您想进行REST通话,请查看此课程:RestIndicesAction.java或cat package
答案 1 :(得分:0)
我没有尝试,但经过对baeldung和stackoverflow的一些研究。我找到了一个可以使用这个maven依赖的解决方案
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
这是代码
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();
}
如果您有任何错误,请告诉我
答案 2 :(得分:0)
这是我的解决方案。用Java 8编写的ElasticSearch 6.2.4。
/*for document count*/
long docCount = client.admin().indices().prepareStats(indiceName).clear().setDocs(true).execute().actionGet().getPrimaries().getDocs().getCount();