SpringDataElasticsearch的使用

自从上一家公司辞职之后,也没有什么机会做这个es相关的了,最近公司要做学习分享,就又拾起es这个话题。

使用SpringBootDataElasticsearch

去springBootData官网看,这次用的版本号如下:


SpringDataElasticsearch的使用_第1张图片
图片.png

首先要起一个Elasticsearch,为了方便,我用docker来起,这里贴上docker-compose.yml

version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.5
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - es_net
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.5
    container_name: elasticsearch2
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - es_net

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local

networks:
  es_net:

启动很简单,直接docker-compose up 就可以启动了。

启动docker

打开127.0.0.1:9200,我们可以看到es的相应。


SpringDataElasticsearch的使用_第2张图片
图片.png
  • SpringData 接入:

  • 直接再maven配置文件中引入spring-boot-starter-data-elasticsearch,就可以用了,因为是starter,可以直接开箱即用。
    这里我直接贴上pom.xml配置文件


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.2.RELEASE
         
    
    pers.yawb
    elasticsearch-demo
    0.0.1-SNAPSHOT
    elasticsearch-demo
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
            org.projectlombok
            lombok
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



  • application.yml中直接配置就可以用了。贴上~配置
spring:
  data:
    elasticsearch:
      repositories:
        enabled: true
      cluster-nodes: 127.0.0.1:9300
      cluster-name: docker-cluster


logging:
  file: data/logs/elasticsearchdemo
  config: classpath:logback-spring.xml
  level:
    org.pringframework.data.elasticsearch: DEBUG

下一步就可以写我们熟悉的MVC了,自己写controller,持久层,业务逻辑层

我又贴一下代码~

/**
 * 仓库
 * @author Yawb
 * @date 2019/12/9 14:31
 */
public interface BankRepository extends ElasticsearchRepository {

    List findByFirstname(String firstName);

    @Query("{\n" +
            "  \"query\": { \"match_phrase\": { \"firstname\": \"?0\" } }\n" +
            "}")
    List findByQueryFirstName(String firstName);
}

这里持久层又回到了springData那一套东西了,可以这样子搞。

我们看一下实现增删查改的那几个方法:
ElasticsearchRepository类:
index(T t), delete(T t),search(Query q)

注意,es没有update这个逻辑,先插入一条新的数据,插入成功之后把旧的数据删除。

最后,写个test方法~

    @Test
    public void test() {
        System.out.println("hhsxxx");
        Page banks = bankService.searchBuild("Winnie", "Mill Lane");
        banks.get().forEach(System.out::println);
        List banks1 = bankService.searchTemplate("Mill Lane");
        banks1.forEach(System.out::println);
    }

丢个截图~

SpringDataElasticsearch的使用_第3张图片
图片.png

收工。。

你可能感兴趣的:(SpringDataElasticsearch的使用)