SpringBoot与检索

  • 前言
  • 一、Linux环境下安装ElasticSearch?
  • 二、 概念原理
  • 三、 利用Postman软件测试ES(快速入门)
  • 1. 发送数据
  • 2. 响应数据
  • 3. 查找:利用GET方法
  • (1)简单查找
  • (2)查找所有
  • (3)条件查找
  • (4)表达式查找
  • 4. 删除:利用DELETE方法
  • 四、SpringBoot整合ES
  • 1. 导入依赖
  • 2. 配置文件


ElasticSearch中文官方文档


前言

我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的首选。他可以快速的存储、搜索和分析海量数据。SpringBoot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持;Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也是采用了ElasticSearch作为其搜索服务,

一、Linux环境下安装ElasticSearch?

Trying to pull elasticsearch

springboot es SearcherBuilder 精准查询 springboot整合es查询_elasticsearch

docker pull elasticsearch

springboot es SearcherBuilder 精准查询 springboot整合es查询_数据_02


查看下载情况:

如果出现错误可以尝试加上版本号

docker images

springboot es SearcherBuilder 精准查询 springboot整合es查询_elasticsearch_03


elsaticsearch默认用java写的,会默认占用2G的内存空间,因此在启动的时候可能需要对内存进行限制,如下所示:

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9300:9300 -p 9200:9200 --name ES02 5acf0e8da90b

限制为256m,并且端口分别为

springboot es SearcherBuilder 精准查询 springboot整合es查询_数据_04

访问:

springboot es SearcherBuilder 精准查询 springboot整合es查询_搜索引擎_05

二、 概念原理

以 员工文档 的形式存储为例:一个文档代表一个员工数据。存储数据到ElasticSearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里。

一个 ElasticSearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 。 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性 。

类似关系:

– 索引-数据库

– 类型-表

– 文档-表中的记录

– 属性-列

springboot es SearcherBuilder 精准查询 springboot整合es查询_搜索_06


发送请求:/索引名称/类型名称/特定属性

三、 利用Postman软件测试ES(快速入门)

1. 发送数据

springboot es SearcherBuilder 精准查询 springboot整合es查询_数据_07

2. 响应数据

springboot es SearcherBuilder 精准查询 springboot整合es查询_搜索_08

3. 查找:利用GET方法

(1)简单查找

直接利用精确地索引来查找

springboot es SearcherBuilder 精准查询 springboot整合es查询_搜索_09

(2)查找所有

服务器IP:9200/megacorp/employee/_search

利用_search来查找megacorp/employee下的所有数据

(3)条件查找

服务器IP:9200/megacorp/employee/_search?q=last_name:Smith

上面是查找megacorp/employee下的last_name是Simth的数据

(4)表达式查找

GET /megacorp/employee/_search
{
    "query" : {
        "match" : {
          "last_name" : "Smith"
        }
    }
}

精确查找last_name为Smith的数据

GET /megacorp/employee/_search
{
    "query" : {
       "must"{
         "match" : {
           "last_name" : "Smith"
          }
       } 
       "fliter":{
         "range":{
           "age" : {"gt" : 30}
         }
       }
    }
}

“fliter” 过滤age大于30的Last_name为Smith的数据
还有短语搜索,高亮搜索。。。。详细见官方文档搜索方式

4. 删除:利用DELETE方法

四、SpringBoot整合ES

1. 导入依赖

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

2. 配置文件

由于不同版本有很大的不同,需要进一步去学习