参考:https://blog.youkuaiyun.com/majun_guang/article/details/81103623
整理:
Client
package com.mobile.es;
import java.net.InetAddress;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
public class ElasticCil {
public final static String HOST = "localhost";
// http请求的端口是9200,客户端是9300
public final static int PORT = 9300;
/**
* getConnection:(获取es连接).
* @return
* @throws Exception
*/
@SuppressWarnings({"resource", "unchecked"})
public static TransportClient getConnection() throws Exception {
// 设置集群名称
Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();
// 创建client
TransportClient client = new PreBuiltTransportClient(settings).addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT));
// client.close();
return client;
}
public static void main(String[] args) throws Exception {
TransportClient client = getConnection();
System.out.println("client==" + client.toString());
System.out.println(client.prepareGet().execute().actionGet().getVersion());
client.close();
}
}
Search
package com.mobile.es;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
public class SearchDemo {
public static void main(String args[]) throws Exception {
TransportClient client = ElasticCil.getConnection();
// select * from
QueryBuilder qb = new MatchAllQueryBuilder();
//QueryBuilders
TermQueryBuilder tq1 = QueryBuilders.termQuery("floorId",new int[]{3,4});
TermQueryBuilder tq2 = QueryBuilders.termQuery("shopName",new String[]{"优衣库"});
//大于 大于等于 小于 小于等于
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("s1apId").gte(1000);
QueryBuilder like = QueryBuilders.wildcardQuery("user", "k*hy17*");
//where floorId in (3,4) or shopName = "优衣库" and s1apId > 1000
BoolQueryBuilder bqb = QueryBuilders.boolQuery().must(rangeQueryBuilder).must(tq1).should(tq2).must(like);
//group by age count avg sum max min
AggregationBuilder grouopby = AggregationBuilders.terms("by_age").field("age");
//多分组 group by age ,gender
TermsAggregationBuilder all = AggregationBuilders.terms("by_gender").field("gender");
AbstractAggregationBuilder ab = all.subAggregation(grouopby);
AggregationBuilder count = AggregationBuilders.count("ageCount").field("age");
AggregationBuilder count1 = ab.subAggregation(count);
//Stats valueCount= response.getAggregations().get("stats");
//logger.log(Level.INFO,"max"+valueCount.getMaxAsString());
//logger.log(Level.INFO,"avg"+valueCount.getAvgAsString());
//logger.log(Level.INFO,"sum"+valueCount.getSumAsString());
//logger.log(Level.INFO,"min"+valueCount.getMinAsString());
//logger.log(Level.INFO,"count"+valueCount.getCount());
AggregationBuilder status = AggregationBuilders.stats("stats").field("age");
//order by
SortBuilder sortBuilder= SortBuilders.fieldSort("floorId");
sortBuilder.order(SortOrder.DESC);
//limit 100
SearchResponse response = client
.prepareSearch("accounts")
.setTypes("person")
//select * from and or in like
.setQuery(bqb)
//group by
.addAggregation(status)
//order by
.addSort(sortBuilder)
.setFrom(0)
.setSize(100)
.get();
}
}