7.14.2 2.10.0 org.springframework spring-beans5.2.6.RELEASE org.springframework spring-aop5.2.6.RELEASE org.springframework spring-context5.2.6.RELEASE org.springframework spring-web5.2.6.RELEASE org.apache.httpcomponents httpclient4.5.12 commons-httpclient commons-httpclient3.1 com.fasterxml.jackson.core jackson-databind${jackson.version} com.fasterxml.jackson.core jackson-annotations${jackson.version} com.fasterxml.jackson.core jackson-core${jackson.version} org.elasticsearch elasticsearch${es.version} org.elasticsearch.plugin percolator-client${es.version} org.elasticsearch.client elasticsearch-rest-high-level-client${es.version} org.springframework.data spring-data-elasticsearch4.2.5 org.springframework.boot spring-boot-starter-data-elasticsearch2.5.4 org.springframework.amqp spring-rabbit2.2.6.RELEASE
注:pom.xml文件中springFarmeWrok版本要一直,否则项目启动报错:
httpClient版本不对也会报错:elasticsearch--Invalid receiver type interface org.apache.http.Header - 景岳 - 博客园
二:变更客户端clientRestHighLevelClient:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")));
我本地初始化客户端代码稍有不同:
public static RestHighLevelClient buildClient(String clusterName, String hosts, int port) {
return buildClient(clusterName, hosts.split("\s*,\s*"), port);
}
public static RestHighLevelClient buildClient(String clusterName, String[] hosts, int port) {
// RestClientBuilder builder = RestClient.builder(Arrays.stream(hosts).map(host -> new HttpHost(host, port)).toArray(HttpHost[]::new));
// final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
// //xpack账户认证
// credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "d0QSyh6tVI4W7663zxuc"));
// //认证和线程数
// builder.setHttpClientConfigCallback(httpClientBuilder -> {
// httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
if (null != esProperties.getThreadCount()) {
}
// httpClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(25).build());
// return httpClientBuilder;
// });
// builder.setRequestConfigCallback(requestConfigBuilder -> {
// requestConfigBuilder.setConnectTimeout(30000);
// requestConfigBuilder.setSocketTimeout(30000);
// requestConfigBuilder.setConnectionRequestTimeout(30000);
// return requestConfigBuilder;
// });
// builder.setHttpClientConfigCallback(httpClientBuilder -> {
// httpClientBuilder.setMaxConnTotal(25);
// httpClientBuilder.setMaxConnPerRoute(15);
// return httpClientBuilder;
// });
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo(Arrays.stream(hosts).map(host -> new InetSocketAddress(host, port)).toArray(InetSocketAddress[]::new))
.withBasicAuth("cluster.name", clusterName)
.withConnectTimeout(30000).withSocketTimeout(30000)
.withHttpClientConfigurer(httpClientBuilder -> {
httpClientBuilder.setMaxConnTotal(25);
httpClientBuilder.setMaxConnPerRoute(15);
return httpClientBuilder;
})
.build();
return RestClients.create(clientConfiguration).rest();
}
return RestClients.create(clientConfiguration).rest();
三、请求构建
//构建查询器
//5.1版本构建:
//SearchRequestBuilder builder = esClientProvider.getClient().prepareSearch(CommonUtils.getIndex(ds));
//7.14.2版本:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//sourceBuilder.setQuery(QueryBuilders.boolQuery().must(queryBuilder));
//更新为:
sourceBuilder.query(QueryBuilders.boolQuery().must(queryBuilder);
//相应的aggregation(),from(),size()等方法也稍有变更
//执行获取结果
//response = builder.execute().actionGet();
//更新为:
SearchResponse response = esClientProvider.getClient()
.search(new SearchRequest()
.source(sourceBuilder), RequestOptions.DEFAULT);
四、不同请求方式变更
MultiTermVectorsRequestBuilder requestBuilder = client.prepareMultiTermVectors();
MultiTermVectorsResponse resp = requestBuilder.execute().actionGet();
XContentBuilder builder2 = XContentFactory.jsonBuilder().startObject();
resp.getResponses().getResponse().toXContent(builder2, ToXContent.EMPTY_PARAMS);
//更新为:
MultiTermVectorsRequest requestBuilder =
new MultiTermVectorsRequest();
XContentBuilder builder2 = null;
for (Node patent : patents) {
TermVectorsRequest request = new TermVectorsRequest(patent.getIndex(), builder2);
request.setFields(fields);
request.setTermStatistics(true);
request.setPositions(false);
request.setFieldStatistics(false);
request.setOffsets(false);
request.setFilterSettings(filterSettings);
requestBuilder.add(request);
}
MultiTermVectorsResponse resp = null;
try {
resp = client.mtermvectors(requestBuilder, RequestOptions.DEFAULT);
}catch (Exception e){
return null;
}
学习资料:
ElasticSearch 7 JAVA实例:初始化-资讯-开发学院-努力做开发者最信赖的技术教程网站!
ElasticSearch 7 JAVA实例:Multi Term Vectors API-资讯-开发学院-努力做开发者最信赖的技术教程网站!
使用RestHighLevelClient方式操作Elasticsearch详细步骤 建议收藏_jonssonyan-CSDN博客_resthighlevelclient 高亮
Building Queries | Java REST Client [7.14] | Elastic



