美文网首页
springboot 整合 elasticsearch

springboot 整合 elasticsearch

作者: freelands | 来源:发表于2017-09-22 21:16 被阅读266次
spring integrate es.png
背景

最近业务上要做一个频繁查询通话次数的结果,但是通话记录表特别大,有几千万数据,在mysql上面,我们都知道mysql在这样大的数据下性能出现了问题,而且mysql面向的业务一般都是事务型的,为了解决这个问题,我们最终选择了elasticsearch,es是基于apache lucene 去实现的,lucene是一个流行开源的检索服务,性能在开源项目中算是数一数二的了,关于对apache lucene的分析以后会陆续出文章,感兴趣的小伙伴可以交流交流。

本项目是基于spring data 整合 elasticsearch,这个过程中遇到很多坑,在引入es的依赖的时候,会出现问题,最后发现是版本的问题,然后把springboot web 版本升级到最高就得以解决,注意下面项目依赖

ES 对于版本的兼容性要求很高。大版本之间是无法兼容的。具体可以见

image.png
  • 项目结构
image.png
  • 项目依赖
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.0.0.M3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.0.M3</version>
        </dependency>


 
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.0.0.RC2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.12</version>
            <scope>provided</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.0.0.M3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • es 配置
<?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/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/data/elasticsearch
        http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch.xsd">


    <elasticsearch:transport-client id="client" cluster-nodes="${elasticsearch.cluster-nodes}" cluster-name="${elasticsearch.cluster-name}" />

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

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

</beans>
  • repository配置
public interface UserRepository extends ElasticsearchRepository<User,String> {
    User findByName(String name);
}

完整项目github链接:
https://github.com/myyan/ElasticsearchDemo

相关文章

网友评论

      本文标题:springboot 整合 elasticsearch

      本文链接:https://www.haomeiwen.com/subject/nqpnrxtx.html