
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>
@Beanpublic 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() {@Overridepublic Builder customizeRequestConfig(Builder requestConfigBuilder) {requestConfigBuilder.setConnectTimeout(connectTimeOut);requestConfigBuilder.setSocketTimeout(socketTimeOut);requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);return requestConfigBuilder;}});// 异步httpclient连接数配置builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {@Overridepublic 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> -->
@Beanpublic 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




