ElasticSearch(分布式搜索引擎)
一、什么是RestFul?
1.1 基本概念
RestFul:软件架构设计风格(一个架构的设计如果遵循Rest设计原则,那么称RestFul)
Rest:资源的表现层状态转化(设计思路)
资源:网络中的一切事物(图片、音乐、数据库记录)
表现层:将资源具体呈现出来的形式
状态转化:如果客户端想操作服务器的资源时,使资源发生某种状态转变
1.2 原则
1.使用Rest的url代替传统的url
传统:localhost:8080/项目名/user/findOne?id=22
Rest:localhost:8080/项目名/user/findOne/22
2.四种请求动词对象服务器的四种操作(CRUD)
GET:查询
POST:更新 | 添加
PUT:更新 | 添加
DELETE:删除
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#000000">示例:</span>
<span style="color:#555555">@Controller</span>
<span style="color:#555555">@RequestMapping</span>(<span style="color:#aa1111">"user"</span>)
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UserController</span>{
<span style="color:#aa5500">/**</span>
<span style="color:#aa5500">* 演示RestFul风格请求查询</span>
<span style="color:#aa5500">*/</span>
<span style="color:#555555">@GetMapping</span>(<span style="color:#aa1111">"findOne/{id}/{name}/"</span>)
<span style="color:#555555">@ResponseBody</span>
<span style="color:#770088">public</span> <span style="color:#008855">String</span> <span style="color:#000000">findOne</span>(<span style="color:#555555">@PathVariable</span>(<span style="color:#aa1111">"id"</span>)<span style="color:#008855">String</span> <span style="color:#000000">id</span>,
<span style="color:#555555">@PathVariable</span>(<span style="color:#aa1111">"name"</span>)<span style="color:#008855">String</span> <span style="color:#000000">name</span>){
<span style="color:#770088">return</span> <span style="color:#aa1111">"演示restful风格传参"</span>;
}
}
<span style="color:#000000">请求地址:</span>
<span style="color:#000000">http</span>:<span style="color:#aa5500">//localhost:8080/项目名/user/findOne/21/张三/</span></span></span>
二、什么是全文检索?
2.1 概念
全文检索:是指计算机程序扫描文章的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
关于全文检索,我们要知道
只处理文本
不处理语义
搜索时英文不区分大小写
结果列表中有相关的排序
三、ElasticSearch
3.1 概念
简称ES,是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
四、ES的安装配置
4.1 安装前提
安装配置JDK1.8+(步骤省略)
4.2 安装ES
注意:ES安装配置时不允许使用root账户,只能使用普通用户
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500"># 1.下载ES linux版本安装包 </span>
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-8-0
<span style="color:#aa5500"># 2.创建用户组及普通用户并以普通用户身份进行登录</span>
<span style="color:#aa5500"># 3.上传es安装包到linux</span>
<span style="color:#aa5500"># 4.使用tar -zxvf 解压上传的安装包</span>
<span style="color:#aa5500">#权限不足问题解决方案:</span>
<span style="color:#3300aa">chown</span> <span style="color:#0000cc">-R</span> zhangsan:u /usr/local/software/elasticsearch-6.8.0
<span style="color:#3300aa">chown</span> <span style="color:#0000cc">-R</span> 用户:用户组 文件的路径
<span style="color:#aa5500"># 5.安装完成后切换到安装目录的bin目录,执行脚本 .elasticserach执行前台启动即可</span>
<span style="color:#aa5500"># 6.web访问端口:9200 tcp端口:9300(java进行连接)</span>
<span style="color:#aa5500"># 7.通过curl http://localhost:9200 查看网页源码测试是否可以访问</span></span></span>
4.3 开启远程连接权限
注意:ES服务默认启动是受保护的,只允许本地客户端连接,如果需要通过远程客户端访问,必须开启远程连接
-
开启ES远程访问
进入es安装目录的config目录下,使用vim指令编辑elasticSearch.yml文件,将原来的network.host修改为 0.0.0.0
-
进入安装目录的bin目录,执行./elasticsearch 脚本启动es
-
重新启动后会出现以下错误
<span style="background-color:#f8f8f8"><span style="color:#221199">ERROR</span><span style="color:#555555">: [</span>3<span style="color:#555555">]</span> bootstrap checks failed <span style="color:#555555">[</span><span style="color:#221199">1]</span><span style="color:#555555">: </span>max file descriptors <span style="color:#555555">[</span>4096<span style="color:#555555">]</span> for elasticsearch process is too low<span style="color:#555555">,</span> increase to at least <span style="color:#555555">[</span>65536<span style="color:#555555">]</span> <span style="color:#555555">[</span><span style="color:#221199">2]</span><span style="color:#555555">: </span>max number of threads <span style="color:#555555">[</span>3836<span style="color:#555555">]</span> for user <span style="color:#555555">[</span>wuzhaobin<span style="color:#555555">]</span> is too low<span style="color:#555555">,</span> increase to at least <span style="color:#555555">[</span>4096<span style="color:#555555">]</span> <span style="color:#555555">[</span><span style="color:#221199">3]</span><span style="color:#555555">: </span>max virtual memory areas vm.max_map_count <span style="color:#555555">[</span>65530<span style="color:#555555">]</span> is too low<span style="color:#555555">,</span> increase to at least <span style="color:#555555">[</span>262144<span style="color:#555555">]</span></span>
-
解决错误[1]
<span style="background-color:#f8f8f8"><span style="color:#aa5500"># 4-1:使用root用户修改系统配置</span> <span style="color:#aa5500"># 4-2:vim /etc/security/limits.conf 在文件末尾添加如下配置:</span> * soft nofile <span style="color:#116644">65536</span> * hard nofile <span style="color:#116644">65536</span> * soft nproc <span style="color:#116644">4096</span> * hard nproc <span style="color:#116644">4096</span> <span style="color:#aa5500"># 4-3:退出终端,然后再进入终端,检测配置是否生效,逐条执行以下命令即可,如果检测的信息和[4-2]中配置的信息一致说明配置正确</span> ulimit <span style="color:#0000cc">-Hn</span> ulimit <span style="color:#0000cc">-Sn</span> ulimit <span style="color:#0000cc">-Hu</span> ulimit <span style="color:#0000cc">-Su</span> </span>
-
解决错误[2]
<span style="background-color:#f8f8f8"><span style="color:#aa5500"># 5-1:使用root用户修改系统配置</span> <span style="color:#aa5500"># 5-2: vim /etc/security/limits.d/20-nproc.conf</span> <span style="color:#aa5500"># 5-3: 将 * 修改为启动es的用户名</span></span>
-
解决错误[3]
<span style="background-color:#f8f8f8"><span style="color:#aa5500"># 6-1:使用root用户修改系统配置</span> <span style="color:#aa5500"># 6-2: vim /etc/sysctl.conf</span> <span style="color:#aa5500"># 6-3: 在sysctl.conf配置文件中加入下面配置保存退出即可</span> vm<span style="color:#0000ff">.max_map_count</span><span style="color:#981a1a">=</span><span style="color:#116644">655360</span> <span style="color:#aa5500"># 6-4:输入sysctl -p 检测是否配置正确</span> <span style="color:#aa5500"># 6-5:关闭终端再次进入终端</span></span>
-
注意:防火墙ssh.xml中记得开放es端口,否则还是无法远程连接,配置完开发端口后记得重启防火墙。
<span style="background-color:#f8f8f8">通过外部浏览器访问es,出现下面内容说明远程连接已经开启 { "name" : "pl1UXjc", "cluster_name" : "elasticsearch", "cluster_uuid" : "Y4i82Cs6RgW7mfbohZy2qg", "version" : { "number" : "6.8.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "65b6179", "build_date" : "2019-05-15T20:06:13.172855Z", "build_snapshot" : false, "lucene_version" : "7.7.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }</span>