1、初始化一个 RestHighLevelClien
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost(\"localhost\", 9201, \"http\")));
这里可以一次创建多个es的连接
2、查询
(1)get api
//创建查询请求
GetRequest getRequest = new GetRequest(_index,_type,_id);
//发起请求
GetResponse getResponse = client.get(getRequest);
//请求结果,是否存在,存在就获取
if(getResponse.isExists()){
getResponse.getSourceAsString();
}
(2)search api
//创建SearchSourceBuilder,设置请求体参数
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//设置分页
if(offset !=null && limit != null){
sourceBuilder.from(offset);
sourceBuilder.size(limit);
}
//设置多条件
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
//这是and连接查询
queryBuilder.must(QueryBuilders.matchPhraseQuery("name","bd"));
queryBuilder .must(QueryBuilders.matchPhraseQuery("age","19"));
//范围查询,jdk8语法:LocalDateTime
queryBuilder .must(QueryBuilders.rangeQuery("createtime").from(LocalDateTime.parse (startDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).includeLower(true));
queryBuilder .must(QueryBuilders.rangeQuery("createtime").to(LocalDateTime.parse (endDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).includeUpper(true));
sourceBuilder.query(queryBuilder);
//设置查询超时时间
sourceBuilder.timeout(new TimeValue(30, TimeUnit.SECONDS));
//创建请求
//设置_index
SearchRequest searchRequest = new SearchRequest(index);
//设置_type
if(!StringUtils.isEmpty(type)){
searchRequest.types(type);
}
//设置请求体参数
searchRequest.source(sourceBuilder);
//发送请求
SearchResponse searchResponse = client.search(searchRequest);\
SearchHits hits = searchResponse.getHits();
//获取总记录数
int totalHits = (int)hits.getTotalHits();
//获取内容
hit.getSourceAsString();
(3)还有更多API,请参考
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html