springboot整合ElasticSearch(restClient&restHighLevelClient CRUD操作演示)

1 根据项目架构选择整合方案

以springboot为例,可选方式有三种:

  • JAVA API
    • 整合TransportClient客户端
    • 基于TCP通信
    • 已过时
  • RestClient
    • 基于HTTP通信
    • Java Low Level REST Client
      • 兼容所有版本ES
    • Java Hight Level REST Client
      • 基于Low开发,只暴露部分API
  • Spring-data-es
    • spring-data-elasticsearch

2 项目实践

考虑到时效性,只作后两种方案尝试

2.1 SpringData整合

  • 按ES版本配置相关依赖(注意es与springdata的版本搭配)
  • 配置xml,配置集群连接,创建bean对象elasticsearchTemplate
  • 使用(CriteriaQuerySearchQuery
    • SearchQuery依赖于elasticsearch的原生QueryBuilders;
    • CriteriaQuery而是特定于Spring Data

参考链接:Spring data ES攻略

2.2 RestClient整合

2.2.1 引入依赖
  • Java Low Level REST Client
<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-client</artifactId>
        <version>6.4.0</version>
    </dependency>
</dependencies>
  • Java Hight Level REST Client
<dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>6.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>6.0.0</version>
    </dependency>
</dependencies>
2.2.2客户端配置
2.2.2.1 Java Low Level REST Client
@Configuration
public class RestConfig {
   
    private String userName;
    private String password;
    private String hostName;
    private Integer port;
    @Bean(destroyMethod="close")
    public RestClient getClient(){
   
        String[] hosts = this.hostName.split(",");
        HttpHost[] httpHosts = new HttpHost[hosts.length];
        for(int i=0;i<hosts.length;i++){
   
            httpHosts[i] = new HttpHost(hiist[i],port,"http");
        }
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthSope.ANY,
              new UsernamePasswordCredentials(userName,Password));
		RestClientBuilder restClientBuilder = RestClient.build(httpHosts);
        //配置身份验证
        restClientBuilder.setHttpClientConfigCallback(
        	return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
        return restClientBuilder.build();
    }
}
2.2.2.2 Java Hight Level REST Client
@Configuration
public class RestConfig {
   
    private String userName;
    private String password;
    private String hostName;
    private Integer port;
    @Bean()
    public RestHighLevelClient getRestClient(){
   
        String[] hosts = this.hostName.split(",");
        HttpHost[] httpHosts = new HttpHost[hosts.length];
        for(int i=0;i<hosts.length;i++){
   
            httpHosts[i] =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值