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

Posted 攻城狮Chova

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是一篇全文搜索教程:微服务框架SpringBoot整合ElasticSearch实现全文搜索相关的知识,希望对你有一定的参考价值。

ElasticSearch

  • ElasticSearch是开源的全文搜索引擎,可以快速的存储,搜索,分析海量数据.SpringBoot通过整合Spring Data ElasticSearch提供检索功能支持
  • ElasticSearch是分布式搜索服务,提供RESTful API,底层基于Lucene,采用多shard(分片) 的方式保证数据安全,并且提供 自动resharding的功能

    ElasticSearch使用

  • 参照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()

以上是关于这是一篇全文搜索教程:微服务框架SpringBoot整合ElasticSearch实现全文搜索的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud微服务架构的困惑

Emlog实现全文加标题搜索方法教程

Solr全文检索框架

「技术分享」微服务开发的幸福感,是如何提升的?

elasticsearch技术实战——第一篇(使用篇)

全文搜索原理简单解析