十、SpringBoot与检索(Elasticsearch)

一、ElasticSearch简介

1.简介

Elasticsearch是一个分布式搜索服务,提供restful API 底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型站点也是采用了Elasticsearch作为其搜索服务;

2.docker安装

  1. 搜索镜像
    docker search elasticsearch
    
  2. 拉取镜像
    docker pull elasticsearch:7.17.1
    
  3. 查看镜像
    docker images
    
  4. 启动镜像
     docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name ES01 515ab4fba870
    
  5. 验证启动成功
    访问:http://192.168.1.XXX:9200,返回以下JSON数据:
    {
      "name" : "5ab04951e8e0",
      "cluster_name" : "docker-cluster",
      "cluster_uuid" : "v_6fQnhsQ8i1S0faXaTo2A",
      "version" : {
        "number" : "7.17.1",
        "build_flavor" : "default",
        "build_type" : "docker",
        "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
        "build_date" : "2022-02-23T22:20:54.153567231Z",
        "build_snapshot" : false,
        "lucene_version" : "8.11.1",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    

二、elasticsearch操作

具体操作参考:
elasticsearch官方文档【中文】
或者关注后续的elasticsearch学习文档

三、SpringBoot整合Elasticsearch

1.引入maven依赖

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
 </dependency>

2. 自动配置

  1. SpringBoot默认支持两种技术和ES进行交互;
    在SpringBoot1.X版本默认使用spring-data-elasticsearch和jest两种客户端和elasticsearch进行交互,但是随着jest在2018年停止维护,以及elasticsearch官方大力推荐RestHighLevel API对elasticsearch进行操作,spring官方在2.X版本移除了jest并加入了RestHighLevelClient;
  2. org.springframework.boot.autoconfigure在自动配置包下的data.elasticsearchelasticsearch下分别对应两种ES加护技术;
  3. org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration中引入了ElasticsearchRestTemplateElasticsearchRepository
  4. org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration引入RestHighLevelClient

3. yml配置文件

spring:
  elasticsearch:
    uris: http://192.168.1.132:9200

4.RestHighLevelClient操作elasticsearch

    @Autowired
    RestHighLevelClient restHighLevelClient;
    
    @Test
    void contextLoads() throws IOException {

        final GetRequest getRequest = new GetRequest();
        getRequest.id("1");
        getRequest.index("book");
        final GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        final String sourceAsString = documentFields.getSourceAsString();
        System.out.println("sourceAsString = " + sourceAsString);
    }

5. ElasticsearchRestTemplate 操作elasticsearch

    @Autowired
    ElasticsearchRestTemplate template;
    
    @Test
    void contextLoads3() throws IOException {
        final Book book = template.get("1", Book.class);
        System.out.println("book = " + book);
    }

6.ElasticsearchRepository操作elasticsearch

  1. 编写某个bean的关联ElasticsearchRepository
    自定义规则参考spring-data官方文档
public interface BookRepository extends ElasticsearchRepository<Book,Long> {

    List<Book> findByAuthorLike(String author);
}
  1. 操作方法
    @Autowired
    BookRepository repository;
        @Test
    void contextLoads() {
        /*Book book = new Book(1L,"红楼梦","曹雪芹");
        repository.save(book);*/

        for (Book book1 : repository.findAll()) {
            System.out.println("book1 = " + book1);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天使吻过的BUG

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

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

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

打赏作者

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

抵扣说明:

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

余额充值