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


3.ElasticSearch搭建
(1).docker搭建ElasticSearch
在docker上搭建ElasticSearch环境
|
[root@hosystem ~]# docker search elasticsearch NAME DESCRIPTION STARS OFFICIAL AUTOMATED elasticsearch Elasticsearch is a powerful open source sear… 4675 [OK] [root@hosystem ~]# docker pull elasticsearch:6.8.4 6.8.4: Pulling from library/elasticsearch d8d02d457314: Pull complete d3dfcf2fdd68: Pull complete c8ffe81b87d5: Pull complete 3fdfbe1a7641: Pull complete dba32acd6977: Pull complete cf006e61e0b6: Pull complete a9425533f3f3: Pull complete Digest: sha256:f4be4f53677e009df3db81f3f6a98908040968bd9a27bdfdf936c651d78e0319 Status: Downloaded newer image for elasticsearch:6.8.4 docker.io/library/elasticsearch:6.8.4 [root@hosystem ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 62f1d3402b78 5 days ago 104MB rabbitmq 3-management 68898be27496 4 weeks ago 186MB rabbitmq latest ea2bf0a30abf 4 weeks ago 156MB hello-world latest bf756fb1ae65 10 months ago 13.3kB elasticsearch 6.8.4 25476914cc66 12 months ago 955MB |
注:若出现manifest for elasticsearch:latest not found: manifest unknown: manifest unknown问题;
|
只需要指定版本号即可 elasticsearch:latest |
(2).启动ElasticSearch
启动ElasticSearch的时候我们需要指定内存大小,否则会出现错误.
由于elasticsearch默认分配jvm空间大小为2g,内存不足分配导致错误.max virtual memory areas vm.max_count(65530) is too low...
|
[root@hosystem ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 62f1d3402b78 5 days ago 104MB rabbitmq 3-management 68898be27496 4 weeks ago 186MB rabbitmq latest ea2bf0a30abf 4 weeks ago 156MB hello-world latest bf756fb1ae65 10 months ago 13.3kB elasticsearch 6.8.4 25476914cc66 12 months ago 955MB [root@hosystem ~]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 25476914cc66 6c91eee08c02a2c3eeda3264d215c73678518881011dc494c121dc4fb658ed06 [root@hosystem ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6c91eee08c02 25476914cc66 "/usr/local/bin/dock…" 10 seconds ago Up 7 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp ES01 |
(3).访问ElasticSearch管理界面
[1].防火墙设置
如果访问出现我们需要检查下是否配置成功,启动是否成功。还有就是防火墙是否已经配置可允许通过9200端口.
|
[root@hosystem ~]# firewall-cmd --zone=public --add-port=9200/tcp --permanent |

[2].vm.max_map_count
|
[root@hosystem ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7ed1a0faa39a 25476914cc66 "/usr/local/bin/dock…" About a minute ago Exited (78) 55 seconds ago ES01 [root@hosystem ~]# docker logs -f -t --tail 10 7ed1a0faa39a #内存不足 https://blog.csdn.net/qq_34756221/article/details/105550037 2020-11-02T14:58:05.423337218Z [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 2020-11-02T14:58:05.502461403Z [2020-11-02T14:58:05,497][INFO ][o.e.n.Node ] [5KFPGEX] closed 2020-11-02T14:58:05.506628526Z [2020-11-02T14:58:05,506][INFO ][o.e.x.m.p.NativeController] [5KFPGEX] Native controller process has stopped - no new native processes can be started |

4.ElasticSearch使用
官方文档:https://www.elastic.co/guide/index.html
(1).下载postmanCanary
(2).创建数据
通过postman的put请求增加员工数据

|
PUT /megacorp/employee/1 { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] } PUT /megacorp/employee/2 { "first_name" : "Jane", "last_name" : "Smith", "age" : 32, "about" : "I like to collect rock albums", "interests": [ "music" ] } PUT /megacorp/employee/3 { "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about": "I like to build cabinets", "interests": [ "forestry" ] } |
(3).检索文档
将 HTTP 命令由 PUT 改为 GET 可以用来检索文档,同样的,可以使用 DELETE 命令来删除文档,以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档,只需再次 PUT .
[1].获取员工
使用GET请求

[2].检验员工是否存在
使用HEAD请求

(4).轻量搜索
[1].搜索所有雇员
|
GET /megacorp/employee/_search |

[2].搜索姓氏为Smith的雇员
|
GET /megacorp/employee/_search?q=last_name:Smith |

(5).查询表达式

参考文档:
https://www.elastic.co/guide/index.html
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
7、Spring Boot检索的更多相关文章
- spring Boot 学习(三、Spring Boot与检索)
一.检索我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data El ...
- spring boot 实战:我们的第一款开源软件
在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? 各位看官会想,我们是来看开源软件的,你给我扯什 ...
- Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- 深入学习微框架:Spring Boot(转)
转:http://www.infoq.com/cn/articles/microframeworks1-spring-boot/ 相关参考: https://spring.io/guides/gs/s ...
- 深入学习微框架:Spring Boot - NO
http://blog.csdn.net/hengyunabc/article/details/50120001 Our primary goals are: Provide a radically ...
- 深入学习微框架:Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- Spring Boot 学习(2)
文 by / 林本托 Tips 做一个终身学习的人. 源代码:github下的/code01/ch2. 配置 Web 应用程序 在上一章中,我们学习了如何创建一个基本的应用程序模板,并添加了一些基本功 ...
- spring boot rest例子
简介: 本文将帮助您使用 Spring Boot 创建简单的 REST 服务. 你将学习 什么是 REST 服务? 如何使用 Spring Initializr 引导创建 Rest 服务应用程序? 如 ...
- Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏
云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习案例来讲确实是一个绝佳的 Spring ...
随机推荐
- 分布式协调服务之Zookeeper集群部署
一.分布式系统概念 在聊Zookeeper之前,我们先来聊聊什么是分布式系统:所谓分布式系统就是一个系统的软件或硬件组件分布在网络中的不同计算机之上,彼此间通过消息传递进行通信和协作的系统:简单讲就是 ...
- 简述 QPS、TPS、并发用户数、吞吐量关系
1. QPS QPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即 ...
- SELECT INTO与INSERT INTO SELECT用法
SELECT INTO SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中: -- 创建 Websites 的备份,这种写法没走索引导致全表扫描 SELECT * INTO W ...
- git学习(十一) idea git pull 解决冲突
测试如下: 先将远程的代码修改,之后更新: 之后将工作区修改的代码(这里修改的代码跟远程修改的位置一样)提交到本地,之后拉取远程的代码,会发现有冲突: Accept Yours 就是直接选取本地的代码 ...
- 在Linux上成功启动Jenkins却无法访问的问题
本鸟最近打算学习Jenkins,正准备在Linux上面鼓捣一番,,却没想被入门级别问题当头一棒 下载完jenkins.war,使用java -jar命令在8088端口开启服务:java -jar je ...
- ASP.NET Core托管运行Quartz.NET作业调度详解
Quartz.NET这么NB的作业调度系统,不会还行? 今天介绍一下Quartz.NET的托管运行,官网传送门. 一.前言 Quartz.NET,按官网上的说法,是一款功能齐全的任务调度系统,从小 ...
- 深度学习四从循环神经网络入手学习LSTM及GRU
循环神经网络 简介 循环神经网络(Recurrent Neural Networks, RNN) 是一类用于处理序列数据的神经网络.之前的说的卷积神经网络是专门用于处理网格化数据(例如一个图像)的神经 ...
- eclipse中将java项目变成web项目
今天,用Eclipse开发项目的时候,把一个Web项目导入到Eclipse里会变成了一个java工程,将无法在Tomcat中进行部署运行. 方法: 1.找到.project文件,找到里面的<na ...
- Luogu P5307 [COCI2019] Mobitel
题意 有一个 \(r\times c\) 的矩阵 \(a\),矩阵的每个位置都有一个正整数,求从左上角走到右下角并且满足路径上数字乘积之和大于 \(n\) 的方案数. \(\texttt{Data R ...
- OpenCascade拓扑对象之:Face的方向、参数域和曲面间的关系
@font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...
