暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch学习篇第三章:Elasticsearch的四种Java api的使用方法

Java技术学习笔记 2020-09-12
1262

    elasticsearch的囊括了很多东西,有分析器、插件、语法、数据组成等等部分,但是我还是很想先看看在Java方面的实际应用,毕竟还是需要实践中使用的,至于其他部分会整理分类地总结出来

    其实我写的都不是我官网文档、实验出来的,而是由很多篇文章整理归纳出来的,不知道算不算抄袭,绝对不会完全相同的复制粘贴,总结归纳也是一种学习方式

TransportClient

TransportClient可以支持2.x,5.x版本,TransportClient将会在Elasticsearch 7.0弃用并在8.0中完成删除,使用HTTP请求而不是Java序列化请求

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.9.1</version>
</dependency>
复制
public TransportClient transportClient() {
TransportClient transportClient = null;
try {
// 配置信息
Settings esSetting = Settings.builder()
.put("cluster.name", clusterName) //集群名字
.put("client.transport.sniff", true)//增加嗅探机制,找到ES集群
.put("thread_pool.search.size", Integer.parseInt(poolSize))//增加线程池个数,暂时设为5
.build();
//配置信息Settings自定义
transportClient = new PreBuiltTransportClient(esSetting);
TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port));
transportClient.addTransportAddresses(transportAddress);
} catch (Exception e) {
log.error("elasticsearch TransportClient create error!!", e);
}
return transportClient;
}
复制

RestClient

包含Java High Level REST Client

ElasticsearchTemplate和ElasticsearchRestTemplate实现ElasticsearchOperations接口

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
复制
复制

@Bean
public RestHighLevelClient elasticsearchClient(){
//获取es连接(不需要密码可以直接连接)
//private RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient
// .builder(new HttpHost(hostname, port, protocol)));


// 账号密码
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(username, password));
// 初始化
RestClientBuilder builder = RestClient.builder(hostList.toArray(new HttpHost[0]));
// 异步httpclient连接延时配置
builder.setRequestConfigCallback(new RequestConfigCallback() {
@Override
public Builder customizeRequestConfig(Builder requestConfigBuilder) {
requestConfigBuilder.setConnectTimeout(connectTimeOut);
requestConfigBuilder.setSocketTimeout(socketTimeOut);
requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
return requestConfigBuilder;
}
});
// 异步httpclient连接数配置
builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.setMaxConnTotal(maxConnectNum);
httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
return httpClientBuilder;
}
});
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}
复制


Jest

Jest是Java社区开发的,是Elasticsearch的Java Http Rest客户端,一定延迟

包写错了<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency> -->
复制
@Bean
public JestClient getJestClient(){
List<String> uris = Arrays.asList(url.split(","));
JestClientFactory jestClientFactory = new JestClientFactory();
jestClientFactory.setHttpClientConfig(new HttpClientConfig
.Builder(uris)
.connTimeout(10000)
.readTimeout(10000)
.maxConnectionIdleTime(1500L, TimeUnit.MILLISECONDS)
.multiThreaded(true)
.build());
return jestClientFactory.getObject();
}
复制

Spring Data Elasticsearch

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
复制
public interface ItemRepository extends ElasticsearchRepository<Item,Long> {}
复制

项目地址

https://gitee.com/hzy100java/springboot-elasticsearch.git
复制

除了这些方法外,应该还有query的查询条件组装、QueryDsl方法


下次写elasticsearch的可视化和QueryDsl

文章转载自Java技术学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论