写点什么

这是一篇全文搜索教程:微服务 SpringBoot 整合 ElasticSearch 搜索引擎实现全文搜索

发布于: 2021 年 04 月 23 日
这是一篇全文搜索教程:微服务SpringBoot整合ElasticSearch搜索引擎实现全文搜索

ElasticSearch

  • ElasticSearch 是开源的全文搜索引擎,可以快速的存储,搜索,分析海量数据.SpringBoot 通过整合 Spring Data ElasticSearch 提供检索功能支持

  • ElasticSearch 是分布式搜索服务,提供 RESTful API,底层基于 Lucene,采用多 shard(分片) 的方式保证数据安全,并且提供 自动 resharding 的功能

ElasticSearch 使用


对于员工目录,我们将做如下操作:1.每个员工索引一个文档,文档包含该员工的所有信息。2.每个文档都将是 employee 类型 。3.该类型位于 索引 megacorp 内。4.该索引保存在我们的 Elasticsearch 集群中。
复制代码


PUT /megacorp/employee/1{    "first_name" : "John",    "last_name" :  "Smith",    "age" :        25,    "about" :      "I love to go rock climbing",    "interests": [ "sports", "music" ]}
复制代码


  • 路径 /megacorp/employee/1 包含了三部分的信息:

  • megacorp:索引名称

  • employee:类型名称

  • 1:特定雇员的 ID

整合 ElasticSearch

  • 引入 spring-boot-starter-data-elasticsearch


    <!--SpringBoot默认使用SpringData ElasticSearch模块进行操作-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>        </dependency>
复制代码


  • 安装 Spring Data 对应版本的 ElasticSearch

  • application.yml 配置

  • SpringBoot 自动配置的 ElasticsearchRepository,ElasticsearchTemplate,Client

  • SpringBoot 默认支持两种技术和 ElasticSearch 进行交互:

  • Jest:

  • 默认不生效

  • 使用时需要导入 Jest 工具包:import io.searchbox.client.JestClient;


    1.给Elasticsearch索引一个文档    2.构建索引功能    index.Builder(article).index("indexName").type("news").build();    3.搜索    search.Builder(json).addIndex("indexName").addType("news").build();    .执行    jetClient.excute()
复制代码


  • SpringData ElasticSearch:SpringData ElasticSearch使用

  • Client: 需要配置节点信息:clusterNodes,clusterName

  • ElasticsearchTemplate: 操作 Elasticsearch

  • 编写 ElasticsearchRepository 的接口继承操作方法操作 Elasticsearch


    1.在application.properties中配置clusterNodes,clusterName(版本适配)    spring.data.elasticsearch.cluster-nodes=localhost:9300    spring.data.elasticsearch.cluster-name=elasticsearch
2.两种用法:ElasticsearchTemplate,ElasticsearchRepository 2.1
2.2 ElasticsearchRepository 实体类注解@Document(indexName="indexName",type="book") 构建索引:bookRespository.index(book); ElasticsearchRepository方法:S save(S var1); Iterable<S> saveAll(Iterable<S> var1); Optional<T> findById(ID var1); boolean existsById(ID var1); Iterable<T> findAll(); Iterable<T> findAllById(Iterable<ID> var1); long count(); void deleteById(ID var1); void delete(T var1); void deleteAll(Iterable<? extends T> var1); void deleteAll(); 查询表达式注解@Query()
复制代码


发布于: 2021 年 04 月 23 日阅读数: 51
用户头像

一位攻城狮的自我修养 2021.04.06 加入

分享技术干货,面试题和攻城狮故事。 你的关注支持是我持续进步的最大动力! https://github.com/ChovaVea

评论

发布
暂无评论
这是一篇全文搜索教程:微服务SpringBoot整合ElasticSearch搜索引擎实现全文搜索