引入依赖
<!--ES-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.4.1</version>
</dependency>
配置
#ES 配置
elasticsearch.active=true
elasticsearch.schema=http
elasticsearch.address=192.168.1.110:9200,192.168.1.111:9200
elasticsearch.connectTimeout=5000
elasticsearch.socketTimeout=5000
elasticsearch.connectRequestTimeout=5000
elasticsearch.maxConnectNum=100
elasticsearch.maxConnectPerRoute=100
@Configuration
public class EsConfig {
@Value("${elasticsearch.active}")
private boolean active;
@Value("${elasticsearch.schema}")
private String schema;
@Value("${elasticsearch.address}")
private String address;
@Value("${elasticsearch.connectTimeout}")
private int connectTimeout;
@Value("${elasticsearch.socketTimeout}")
private int socketTimeout;
@Value("${elasticsearch.connectRequestTimeout}")
private int connectRequestTimeout;
@Value("${elasticsearch.maxConnectNum}")
private int maxConnectNum;
@Value("${elasticsearch.maxConnectPerRoute}")
private int maxConnectPerRoute;
@Bean(name="restHighLevelClient")
public RestHighLevelClient restHighLevelClient(){
if(!active)
return null;
//拆分地址
List<HttpHost>hostList=new ArrayList<>();
String[]hostArr=address.split(",");
for (String addr : hostArr) {
String host=addr.split(":")[0];
String port=addr.split(":")[1];
hostList.add(new HttpHost(host,Integer.parseInt(port),schema));
}
//转为HttpHost数组
HttpHost[]httpHost=hostList.toArray(new HttpHost[]{});
//构建连接对象
RestClientBuilder builder=RestClient.builder(httpHost);
//异步连接延时配置
builder.setRequestConfigCallback(requestConfigBuilder->{
requestConfigBuilder.setConnectTimeout(connectTimeout);
requestConfigBuilder.setSocketTimeout(socketTimeout);
requestConfigBuilder.setConnectionRequestTimeout(connectRequestTimeout);
return requestConfigBuilder;
});
//异步连接数量配置
builder.setHttpClientConfigCallback(httpClientBuilder->{
httpClientBuilder.setMaxConnTotal(maxConnectNum);
httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
return httpClientBuilder;
});
return new RestHighLevelClient(builder);
}
}
测试
String index = "test";
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
//查找test1最新的一条记录
searchSourceBuilder.sort(SortBuilders.fieldSort("test1").order(SortOrder.DESC));
searchSourceBuilder.size(1);
SearchRequest request = new SearchRequest(index);
request.source(searchSourceBuilder);
//获取查询结果
SearchResponse searchResponse = restHighLevelClient.search(request, RequestOptions.DEFAULT);
if (RestStatus.OK.equals(searchResponse.status()) && searchResponse.getHits().getTotalHits().value > 0) {
SearchHits hit = searchResponse.getHits();
for (SearchHit searchHit : hit.getHits()) {
JSONObject jsonObj = JSON.parseObject(searchHit.getSourceAsString());
bjsj = jsonObj.getDate("test1");
indexStatus.setDate(bjsj);
}
}
发表评论
取消回复