一、引入ES客户端依赖
<!--elsaticsearch的客户端-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.5.4</version>
</dependency>
二、各种增删改查
package com.elastic;
import com.sun.xml.internal.ws.client.ClientTransportException;
import org.apache.lucene.index.Term;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.cluster.health.ClusterHealthStatus;
import org.elasticsearch.cluster.health.ClusterIndexHealth;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryAction;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
import org.elasticsearch.search.aggregations.bucket.filter.Filters;
import org.elasticsearch.search.aggregations.bucket.filter.FiltersAggregator;
import org.elasticsearch.search.aggregations.bucket.missing.Missing;
import org.elasticsearch.search.aggregations.bucket.range.Range;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.avg.Avg;
import org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality;
import org.elasticsearch.search.aggregations.metrics.max.Max;
import org.elasticsearch.search.aggregations.metrics.min.Min;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.channels.ReadPendingException;
import java.util.Map;
import java.util.concurrent.ExecutionException;
public class ESTest {
//查询数据
@Test
public void test1() throws UnknownHostException {
//指定ES集群
Settings settings= Settings.builder().put("cluster.name","my-application").build();
//创建访问es服务器的客户端
/*
InetAddress.getByName("192.168.184.133")
输出结果为:
/192.168.184.133
*/
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
//数据查询
GetResponse response=client.prepareGet("index","user","1").execute().actionGet();
//得到查询中的数据
System.out.println(response.getSourceAsString());
//关闭客户端
client.close();
}
//添加文档
@Test
public void test2() throws IOException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
XContentBuilder doc= XContentFactory.jsonBuilder().startObject().
field("id","2").
field("title","java设计模式").
field("postdate","2019-01-01").
field("url","www.csdn.com").endObject();
//文档的id,如果为null,则由es生成,如果指定就用指定的
IndexResponse response=client.prepareIndex("index_idea","blog","2").setSource(doc).get();
System.out.println(response.status());
client.close();
}
//删除文档
@Test
public void test3() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
DeleteResponse response= client.prepareDelete("index_idea","blog","2").get();
System.out.println(response.status());
client.close();
}
//post方式的更新,只更部分字段,更新文档
@Test
public void test4() throws IOException, ExecutionException, InterruptedException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
UpdateRequest request=new UpdateRequest();
request.index("index_idea").type("blog").id("2")
.doc(
XContentFactory.jsonBuilder().startObject()
.field("title","JAVA设计模式之单例模式")
.endObject()
);
UpdateResponse response=client.update(request).get();
System.out.println(response);
client.close();
}
//upsert更新,这种方式如果文档存在就更新,如果文档不存在就添加文档
@Test
public void test5() throws IOException, ExecutionException, InterruptedException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
//添加文档
IndexRequest request=new IndexRequest("index_idea","blog","3").source(
XContentFactory.jsonBuilder().startObject().
field("id","2").
field("title","java设计模式之工厂模式").
field("postdate","2019-01-01").
field("url","www.csdn.com")
.endObject()
);
//修改
UpdateRequest request2=new UpdateRequest();
request2.index("index_idea").type("blog").id("10")
.doc(
XContentFactory.jsonBuilder().startObject()
.field("title","JAVA设计模式!!!!")
.endObject()
).upsert(request);
UpdateResponse response=client.update(request2).get();
System.out.println(response);
client.close();
}
//mget
@Test
public void test6() throws IOException, ExecutionException, InterruptedException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
MultiGetResponse responses=client.prepareMultiGet()
.add("index_idea","blog","1")
.add("index_idea","blog","2").get();
for (MultiGetItemResponse item:responses){
GetResponse gr=item.getResponse();
if(gr!=null &&gr.isExists()){
System.out.println(gr.getSourceAsString());
}
}
client.close();
}
//bulk批量增删改操作
@Test
public void test7() throws IOException, ExecutionException, InterruptedException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
BulkRequestBuilder bulkRequestBuilder=client.prepareBulk();
//批量添加
bulkRequestBuilder.add(
client.prepareIndex("index_idea","blog","11").setSource(
XContentFactory.jsonBuilder().startObject().
field("id","11").
field("title","java设计模式之工厂模式---11").
field("postdate","2019-01-01").
field("url","www.csdn.com")
.endObject()
)
);
bulkRequestBuilder.add(
client.prepareIndex("index_idea","blog","12").setSource(
XContentFactory.jsonBuilder().startObject().
field("id","11").
field("title","java设计模式之工厂模式---12").
field("postdate","2019-01-01").
field("url","www.csdn.com")
.endObject()
)
);
BulkResponse responses=bulkRequestBuilder.get();
System.out.println(responses.status());
if(responses.hasFailures()){
System.out.println("失败了");
}
client.close();
}
//查询删除
@Test
public void test8() throws IOException, ExecutionException, InterruptedException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
BulkByScrollResponse response= DeleteByQueryAction.INSTANCE
.newRequestBuilder(client)
.filter(QueryBuilders.matchQuery("title","11"))
.source("index_idea")
.get();
long counts = response.getDeleted();
System.out.println(counts);
client.close();
}
//match_all,查询所有
@Test
public void test9() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
QueryBuilder queryBuilder=QueryBuilders.matchAllQuery();
//默认是查10条
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(3).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
//match query
@Test
public void test10() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
QueryBuilder queryBuilder=QueryBuilders.matchQuery("title","JAVA");
//setSize设置每次查询多少条文档
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(3).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
//multiMatch query
@Test
public void test11() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
QueryBuilder queryBuilder=QueryBuilders.multiMatchQuery("java","title","url");
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(10).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
//term query
@Test
public void test12() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
QueryBuilder queryBuilder=QueryBuilders.termQuery("title","java");
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(10).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
//terms query
@Test
public void test13() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
QueryBuilder queryBuilder=QueryBuilders.termsQuery("title","12","11");
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(10).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
@Test
public void test14() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
//rang query
//QueryBuilder queryBuilder=QueryBuilders.rangeQuery("birthday").from("1990-01-01").to("2010-01-01").format("yyyy-MM-dd");
//prefix查询
//QueryBuilder queryBuilder=QueryBuilders.prefixQuery("name","zhang");
//通配符查询,wildcard查询 *任意多个字符,?任意一个字符
//QueryBuilder queryBuilder=QueryBuilders.wildcardQuery("name","zhao*");
//fuzzy 模糊查询,写的不太对,也能查询到changge
// QueryBuilder queryBuilder=QueryBuilders.fuzzyQuery("xiangqu","chagge");
//type查询
//QueryBuilder queryBuilder=QueryBuilders.typeQuery("blog");
//ids查询
QueryBuilder queryBuilder=QueryBuilders.idsQuery().addIds("1","2","3");
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(10).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
//聚合查询
@Test
public void test15() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
//最大值
/* AggregationBuilder aggregationBuilder= AggregationBuilders.max("aggMax").field("age");
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).get();
Max max=response.getAggregations().get("aggMax");
System.out.println(max.getValue());*/
//最小值
/* AggregationBuilder aggregationBuilder= AggregationBuilders.min("aggMin").field("age");
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).get();
Min min = response.getAggregations().get("aggMin");
System.out.println(min.getValue());*/
//平均值
/*AggregationBuilder aggregationBuilder= AggregationBuilders.avg("aggAvg").field("age");
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).get();
Avg avg = response.getAggregations().get("aggAvg");
System.out.println(avg.getValue());*/
//总和
/* AggregationBuilder aggregationBuilder= AggregationBuilders.sum("aggSum").field("age");
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).get();
Sum sum = response.getAggregations().get("aggSum");
System.out.println(sum.getValue());*/
//求基数,指定字段中有多少个互不相同的年龄
AggregationBuilder aggregationBuilder= AggregationBuilders.cardinality("aggCardinality").field("age");
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).get();
Cardinality cardinality = response.getAggregations().get("aggCardinality");
System.out.println(cardinality.getValue());
client.close();
}
// query string
@Test
public void test16() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
//QueryBuilder queryBuilder=QueryBuilders.commonTermsQuery("name","zhaoliu");
//查询包含唱歌,但不包含喝酒
//QueryBuilder queryBuilder=QueryBuilders.queryStringQuery("+changge -hejiu");
//查找个产不多,满足其中一个就行了
QueryBuilder queryBuilder=QueryBuilders.simpleQueryStringQuery("+changge -hejiu");
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(10).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
//组合查询
@Test
public void test17() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
/* QueryBuilder queryBuilder=QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("xingqu","changge"))
.mustNot(QueryBuilders.matchQuery("xingqu","hejiu"))
.should(QueryBuilders.matchQuery("address","bei jing"))
//gte大于等于
.filter(QueryBuilders.rangeQuery("birthday").gte("1990-01-01").format("yyyy-MM-dd"));*/
//constantScoreQuery,不计算相关度分数
QueryBuilder queryBuilder=QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("name","zhaoliu"));
SearchResponse response=client.prepareSearch("index_idea")
.setQuery(queryBuilder).setSize(10).get();
SearchHits hits=response.getHits();
for (SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key: sourceAsMap.keySet()){
System.out.println(key+"-->"+sourceAsMap.get(key));
}
}
client.close();
}
@Test
public void test18() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
//分组聚合查询,按年领分组,查看有多少人
/* AggregationBuilder aggregationBuilder= AggregationBuilders.terms("terms").field("age");
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).execute().actionGet();
Terms terms=response.getAggregations().get("terms");
for (Terms.Bucket entry:terms.getBuckets()){
System.out.println(entry.getKey()+":"+entry.getDocCount());
}*/
//fileter聚合
/* QueryBuilder queryBuilder=QueryBuilders.termsQuery("age",20);
AggregationBuilder aggregationBuilder=AggregationBuilders.filter("filter",queryBuilder);
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).execute().actionGet();
Filter filter= response.getAggregations().get("filter");
System.out.println(filter.getDocCount());*/
// filters聚合多个条件
/* AggregationBuilder aggregationBuilder=AggregationBuilders.filters("filters",
new FiltersAggregator.KeyedFilter("changge",QueryBuilders.termQuery("xiangqu","changge")),
new FiltersAggregator.KeyedFilter("hejiu",QueryBuilders.termQuery("xiangqu","hejiu"))
);
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).execute().actionGet();
Filters filters= response.getAggregations().get("filters");
for (Filters.Bucket entry:filters.getBuckets()){
System.out.println(entry.getKey()+":"+entry.getDocCount());
}*/
//rang聚合,范围聚合
AggregationBuilder aggregationBuilder=AggregationBuilders
.range("range")
.field("age")
.addUnboundedTo(50)//(,to)
.addRange(25,50)//[from,to)
.addUnboundedFrom(25);//[from,)
SearchResponse response=client.prepareSearch("index_idea").addAggregation(aggregationBuilder).execute().actionGet();
Range range= response.getAggregations().get("range");
/*
* 结果为:
*
* *-50.0:5
* 25.0-50.0:2
* 25.0-*:3
*
*/
for (Range.Bucket entry:range.getBuckets()){
System.out.println(entry.getKey()+":"+entry.getDocCount());
}
//missing聚合,找出哪个有null的
AggregationBuilder aggregationBuilder1=AggregationBuilders.missing("missing").field("price");
SearchResponse response1=client.prepareSearch("index_idea").addAggregation(aggregationBuilder1).execute().actionGet();
Aggregation aggregation= response1.getAggregations().get("missing");
System.out.println(aggregation.toString());
client.close();
}
//使用java程序实现集群的管理
@Test
public void test19() throws UnknownHostException {
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress[]{
new TransportAddress(InetAddress.getByName("192.168.184.133"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.135"),9300),
new TransportAddress(InetAddress.getByName("192.168.184.136"),9300)
});
ClusterHealthResponse clusterHealthResponse=client.admin().cluster().prepareHealth().get();
String clusterName=clusterHealthResponse.getClusterName();
System.out.println("clusterName="+clusterName);
//存放数据的节点
int numberOfDataNodes = clusterHealthResponse.getNumberOfDataNodes();
System.out.println("numberOfDataNode=" + numberOfDataNodes);
//一共有多少节点
int numberOfNodes = clusterHealthResponse.getNumberOfNodes();
System.out.println("numberOfNodes" + numberOfNodes);
//集群中一种有多少索引clusterHealthResponse.getIndices()
for (ClusterIndexHealth clusterIndexHealth:clusterHealthResponse.getIndices().values()){
//得到索引的名称
String index = clusterIndexHealth.getIndex();
//该索引的主分片个数
int numberOfShards = clusterIndexHealth.getNumberOfShards();
//该索引的副分片个数
int numberOfReplicas = clusterIndexHealth.getNumberOfReplicas();
System.out.printf("index=%s,numberOfShards=%d,numberOfReplicas=%d\n",index,numberOfShards,numberOfReplicas);
//该索引的状态
ClusterHealthStatus status = clusterIndexHealth.getStatus();
System.out.println(status.toString());
}
client.close();
}
}
详情参考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.2/java-docs.html