SpringBoot整合Elasticsearch全文搜索引擎

也参考了一些博主写的整合的内容,发现他们使用的Elasticsearch版本都比较旧,实际我在整合的过程中,SpringBoot2.2做了很好的适配,因为前面我使用的Elasticsearch版本为6.8.9,也能直接使用,但在这里我还是将对应的版本关系贴出来供参考。

Spring Data ElasticsearchElasticsearch
3.1.x6.2.2
3.0.x5.5.0
2.1.x2.4.0
2.0.x2.2.0
1.3.x1.5.2

由于Elasticsearch的版本更新较快,我们可以根据上面的版本关系图寻找适合的Spring Data Elasticsearch的依赖版本进行配置。

引入相关依赖

在前面的Elasticsearch的简介中已经说过了怎么使用docker部署,这边就不再重新介绍。

<!-- SpringBoot默认使用SpringData 进行Elasticsearch操作  -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

SpringBoot2.0中支持两种操作Elasticsearch的方式,一种是Rest Client,一种是Spring Data,在入门这块我使用Spring Data进行演示,因为操作比较简单易懂。在properties文件中添加Elasticsearch相关连接信息。

# 配置elasticsearch连接信息
spring.data.elasticsearch.cluster-name=docker-cluster
spring.data.elasticsearch.cluster-nodes=服务器地址:9300

此处的集群名称使用我们访问服务器的9200端口获得,注意此处的集群节点填的是9300端口,因为我们使用的是Java进行连接。

clu

编写实体类以及ElasticsearchRepository接口的子接口

使用Spring Data操作Elasticsearch又有两种方法,一是编写ElasticsearchRepository的子接口,二是直接使用ElasticsearchTemplate进行操作,这边介绍第一种方法,因为第一种方法较为灵活。

package com.ross.elasticsearch.entity;

import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;

@Data
//由于ES中存储的都是文档,需要指定存储的对象的索引名和类型
@Document(indexName = "ross",type = "book")
public class Book {

    private Integer id;
    private String bookName;
    private String author;
}
package com.ross.elasticsearch.repository;

import com.ross.elasticsearch.entity.Book;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;

//泛型中第一个是要操作的实体类的类型,第二个参数是主键的类型
public interface BookRepository extends ElasticsearchRepository<Book,Integer> {

    //自定义接口方法
    List<Book> findAllByBookName(String bookName);
}

往Elasticsearch中索引(保存)一个对象进行测试。

@Test
void contextLoads() {
  Book book = new Book();
  book.setId(1);
  book.setBookName("三国演义");
  book.setAuthor("罗贯中");

  //往ES中索引(保存)一个对象
  bookRepository.index(book);

}

请求URI进行结果查询,浏览器中输入http://服务器地址:9200/ross/book/_search

{
    "took": 6,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1.0,
        "hits": [
            {
                "_index": "ross",
                "_type": "book",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "id": 1,
                    "bookName": "三国演义",
                    "author": "罗贯中"
                }
            }
        ]
    }
}

编写ElasticsearchRepository的子接口灵活在可以自定义接口方法,并且无需编写方法的实现,它便能够自动进行关键字匹配。例如上面编写的findAllByBookName()方法符合And关键词匹配,我们进行方法的测试。

@Test
void test(){
  List<Book> bookList = bookRepository.findAllByBookName("三");
  for (Book book : bookList) {
    System.out.println(book.getBookName());
  }
}
三国演义

具体的自定义接口方法编写规则可以去Spring官方文档进行查看学习,地址https://docs.spring.io/spring-data/elasticsearch/docs/4.0.0.RELEASE/reference/html/#elasticsearch.repositories

总结

由于本人也刚接触ES不久,也没有相关实战项目的经历,还在学习当中,不过总结总归是好的,为以后造轮子打基础😁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot是一个非常流行的Java web开发框架,Elasticsearch是一款开源的搜索引擎,两者的结合可以提供非常强大的搜索功能。下面是整合步骤: 1. 引入Elasticsearch依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 2. 配置Elasticsearch连接信息 在application.properties文件中添加以下配置: ```properties spring.data.elasticsearch.cluster-name=my-application spring.data.elasticsearch.cluster-nodes=localhost:9300 ``` 其中,cluster-name和cluster-nodes分别指定Elasticsearch集群名称和连接地址。 3. 定义Elasticsearch数据模型 使用@Entity注解标注Java类,将其映射到Elasticsearch中的一个数据类型。例如: ```java @Entity public class Book { @Id private String id; private String name; private String author; // getters and setters } ``` 4. 定义Elasticsearch数据访问接口 使用ElasticsearchRepository接口,继承该接口即可获得Elasticsearch数据访问的基本方法。例如: ```java public interface BookRepository extends ElasticsearchRepository<Book, String> { List<Book> findByName(String name); } ``` 5. 使用Elasticsearch数据访问接口 在业务逻辑中使用BookRepository接口中定义的方法进行数据访问。例如: ```java @Service public class BookService { @Autowired private BookRepository bookRepository; public List<Book> search(String keyword) { return bookRepository.findByName(keyword); } } ``` 以上就是Spring Boot整合Elasticsearch的基本步骤。通过以上步骤,可以快速搭建一个基于Elasticsearch的高效搜索引擎
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

当一艘船沉入海底8

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

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

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

打赏作者

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

抵扣说明:

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

余额充值