ElasticSearch(五) 整合Spring-data-elasticsearch

spring-data-elasticsearch对ElasticSearch API进行了封装,很好的集成了Spring框架,我们只需要定义好实体类(定义文档、文档类型、索引字段,字段类型等)和实现对应的接口,即可操作ElasticSearch。
1. 版本对应关系 :spring-data-elasticsearch 跟ElasticSearch客户端是有版本对应关系的,低版本的elasticsearch客户端是连接不了高版本的elasticsearch服务器,所以,使用spring-data-elasticsearch前要先确定好elasticsearch服务器版本,然后引入对应的spring-data-elasticsearch 版本。版本对应关系如下:
在这里插入图片描述
2. 引入maven依赖
引入maven包

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>3.1.6.RELEASE</version>
</dependency>

3.定义实体类和对应的Repository
实体类:User.java,类注解和属性注解请看下一节解析。

@Document(indexName = "user_db", type = "user_table")
public class User{
    @Id
    @Field(type = FieldType.Keyword)
    private String userId;

    @Field(type= FieldType.Keyword)
    private String account; 

    @Field(type= FieldType.Keyword)
    private String userName;

    @Field(type= FieldType.Keyword)
    private String idCard; 

    @Field(type = FieldType.Date,
            format = DateFormat.custom,
            pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime; 
    //DOTO
    //get和set方法
    //toString()方法
}

定义Repository:UserRepository,Repository使用请看下一节解析

package com.myelastic.repository;
import com.myelastic.model.User;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface UserRepository extends ElasticsearchRepository<User, String> {
    User findByUserId(StringuserId);
}

至此,实体类和Repository就定义完成了,实体类主要是定义了Java对象跟ES索引、字段映射之间的关系,Repository仓库主要定义了对ES相关的操作,默认集成ElasticsearchRepository类是支持普通的增删查的。
4、引入XML,集成Spring
定义完实体类和Reposity后,就可以通过配置xml文件,并且引入到Spring中。以下为spring-elasticsearch.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
       xsi:schemaLocation="http://www.springframework.org/schema/data/elasticsearch https://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

    <elasticsearch:repositories base-package="com.myelastic.repository"  elasticsearch-template-ref="elasticsearchTemplate"/>

    <elasticsearch:transport-client id="client" cluster-nodes="ip:9300,ip:9300" cluster-name="elasticsearch" />

    <bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
        <constructor-arg name="client" ref="client"/>
    </bean>

</beans>

base-package:指RepositoryJava类定义包路径,如UserRepository 在包com.myelastic.repository路径下。
elasticsearch-template-ref:指向模板配置bean名称,不填默认为elasticsearchTemplate。
cluster-nodes:集群节点,ip:端口号(Transport 端口,非http端口),多个节点英文逗号(,)隔开。
cluster-name:集群节点名称,对应ES配置文件elasticsearch.yml 的cluster.name
5、完成配置,调用实现
完成以上配置后,就可以在程序中引用调用ES了。

@Service
public class MyService {

  @Autowired
  private UserRepository repository;

  //创建用户索引
  public User userIndex(User user) {
    	User userEs = repository.save(user);
    	return userEs;
  }
 
  //根据用户ID查询用户信息
  public User queryUserById(String userId) {
  		User user = repository.findByUserId(userId);
     	return user;
  }
 
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zheng45

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值