es transportClient切换为restHighLevelClient查询

1.pom依赖

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.1.1</version>
</dependency>
2.注入RestHighLevelClient
application.properties文件加:es.client.rest.servers=ip:9200,ip:9200,ip:9200
@Value("${es.client.rest.servers}")
private String restServers;
@Bean
public RestHighLevelClient initRestHighLevelClient() {
logger.info("Elasticsearch RestHighLevelClient 初始化开始...");
System.setProperty("es.set.netty.runtime.available.processors","false");
RestHighLevelClient restHighLevelClient = null;
try {

logger.info(String.format("es.client.rest.servers = %s", restServers));
HashMultimap<String, Integer> hostAndPort = HashMultimap.create();
String[] hps = restServers.split(",");
String[] kv;
for(String hp : hps){
kv = hp.split(":");
if(kv.length == 2){
hostAndPort.put(kv[0], Integer.parseInt(kv[1]));
}else{
logger.error(String.format("es.client.rest.servers: %s 配置有误, 示例: host:port", hp));
}
}
Preconditions.checkArgument(!hostAndPort.isEmpty(), "es.client.rest.servers 中无可用的服务节点配置。");

List<HttpHost> httpPosts = Lists.newArrayList();
for(Map.Entry<String, Integer> hp : hostAndPort.entries()) {
httpPosts.add(new HttpHost(hp.getKey(), hp.getValue(), "http"));
}

RestClientBuilder restClientBuilder = RestClient.builder(httpPosts.toArray(new HttpHost[hostAndPort.size()]));
restClientBuilder.setMaxRetryTimeoutMillis(180000);

    //加 xpack密码后
     BasicCredentialsProvider cedentialsProvider = new BasicCredentialsProvider();
    cedentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(apiUserAndPas.split(":")[0],apiUserAndPas.split(":")[1]));
    restClientBuilder.setHttpClientConfigCallback((HttpAsyncClientBuilder httpAsyncClientBuilder)->httpAsyncClientBuilder.setDefaultCredentialsProvider(cedentialsProvider));


restHighLevelClient = new RestHighLevelClient(restClientBuilder);

logger.info(String.format("Elasticsearch RestHighLevelClient 初始化成功,参数为:%s", toString()));
} catch (Exception e) {
logger.error("elasticsearch RestHighLevelClient create error!!!", e);
}
return restHighLevelClient;
}
3.api切换
SearchRequestBuilder requestBuilder = transportClient.prepareSearch(索引).setTypes(此处为type);

BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
requestBuilder.setQuery(boolQueryBuilder);
requestBuilder.get().getHits();
切换为
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(索引);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
searchSourceBuilder.query(boolQueryBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse =null;
try {
searchResponse= restHighLevelClient.search(searchRequest);
} catch (IOException e) {
e.printStackTrace();
}
searchResponse.getHits()
 


posted @ 2022-04-25 11:31  帅东我不帅  阅读(276)  评论(0编辑  收藏  举报