SpringBoot与检索
前言
我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的首选。他可以快速的存储、搜索和分析海量数据。SpringBoot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持;Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也是采用了ElasticSearch作为其搜索服务,
一、Linux环境下安装ElasticSearch?
Trying to pull elasticsearch
docker pull elasticsearch
查看下载情况:
如果出现错误可以尝试加上版本号
docker images
elsaticsearch默认用java写的,会默认占用2G的内存空间,因此在启动的时候可能需要对内存进行限制,如下所示:
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9300:9300 -p 9200:9200 --name ES02 5acf0e8da90b
限制为256m,并且端口分别为
访问:
二、 概念原理
以 员工文档 的形式存储为例:一个文档代表一个员工数据。存储数据到ElasticSearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里。
一个 ElasticSearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 。 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性 。
类似关系:
– 索引-数据库
– 类型-表
– 文档-表中的记录
– 属性-列
发送请求:/索引名称/类型名称/特定属性
三、 利用Postman软件测试ES(快速入门)
1. 发送数据
2. 响应数据
3. 查找:利用GET方法
(1)简单查找
直接利用精确地索引来查找
(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. 配置文件
由于不同版本有很大的不同,需要进一步去学习