Elasticsearch简介与环境搭建
一、简介
ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统,
根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
1、什么是搜索
百度、Google:我们想寻找一个我们喜欢的电影或者书籍就会去百度或者Google搜索一下。 互联网搜索:电商搜索商品,招聘网站搜索简历或者岗位 IT系统的搜索:员工管理搜索,会议管理搜索
2.如果用数据库做搜索会怎么样
3.正常的sql搜索存在的问题:
如果表记录上千万上亿了这个性能问题,另外一个如果有一个本文字段要在里面模糊配置,这个就会出现严重的性能问题
还不能将搜索词拆分开来,比如上面这个只能搜索名字是“张三”开头的员工,如果想搜出“张小三”那是搜索不出来的。总体来说,用数据库来实现搜索,是不太靠谱的,通常性能也会很差
3、什么是全文检索、倒排索引和Lucene
举个简单的例子:比如最近上映的热剧(碟中谍6:全面瓦解),我们想搜索一下全面瓦解这个电视剧,可是在输入的过程,不小心输入了”全瓦解”,我们看看百度这个返回了什么,百度返回的结果确实是我想要找到的内容
全文检索
就比较好理解的,就是当我们输入“全瓦解”,会被拆分成”全”,“瓦解”2个此,用2个词去倒排索引里面去检索数据,检索到的数据返回。整个过程就叫做全文检索
倒排索引
如果这个用数据库的思维来做的话,假如一共100W的记录,按照之前的思路就是扫描100W次,而且每次扫描,都需要匹配那个文本所有的字符,确认是否包含搜索的关键词,而且还不能将搜索词拆解来进行检索如果是利用倒排索引的话,假设还是100W,拆分出来的词语,假设有1000W个词语,那么在倒排索引中,就有1000W行。我们可能不需要检索1000W词,有可能检索1次,就能找到我们需要的数据,也有可能是100W次,也有可能是1000W次这就是为什么我们命名搜索的是全瓦解,事实上只是按照瓦解搜索的,因为全在倒排索引中没有存在
4、ElasticSearch的应用场景
维基百科
The Guardian(国外新闻网站)
Stack Overflow(国外的程序异常讨论论坛)
GitHub(开源代码管理)
电商网站
日志数据分析
商品价格监控网站
BI系统
站内搜索
5.ElasticSearch的功能
分布式的搜索引擎和数据分析引擎搜索:网站的站内搜索,IT系统的检索数据分析:电商网站,统计销售排名前10的商家全文检索,结构化检索,数据分析全文检索:我想搜索商品名称包含某个关键字的商品结构化检索:我想搜索商品分类为日化用品的商品都有哪些数据分析:我们分析每一个商品分类下有多少个商品对海量数据进行近实时的处理分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索海联数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了近实时:检索数据要花费1小时(这就不要近实时,离线批处理,batch-processing);在秒级别对数据进行搜索和分析
二、环境搭建
1.安装Elasticsearch主文件
(1)Elasticsearch无需安装,解压即用。
(2)进入elasticsearch/bin目录,可以看到下面的执行文件:双击运行,等全部加载完
可以看到绑定了两个端口:
9300:Java程序访问的端口
9200:浏览器、postman访问的端口
(3)我们在浏览器中访问:http://127.0.0.1:9200
看到了上面的信息,说明你的Elasticsearch已经安装成功了
(4)配置
添加
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
然后去掉network.host: 192.168.0.1的注释并改为network.host: 0.0.0.0,
去掉cluster.name;node.name;http.port的注释(也就是去掉#)
第二步:关掉之前的命令提示符双击bin路径下的elasticsearch.bat重启Elasticsearch
正常启动并且可以通过http://127.0.0.1:9200访问即配置成功
2.配置Elasticsearch的客户端工具
(1)安装node.js
安装完成用cmd进入安装目录执行 node -v可查看版本号
..
执行 npm install -g grunt-cli 安装grunt ,安装完成后执行grunt -version查看是否安装成功,会显示安装的版本号
(2)解压安装包:
(3)修改Gruntfile.js
(4)在对应的位置加上hostname:’*’、
(5)在命令提示符进入该文件夹根目录例:D:\environment\elasticsearch-head-master
执行npm install
(6)
执行npm run start 运行head插件,如果运行不成功建议重新安装grunt
(7)打开浏览器访问:http://127.0.0.1:9100健康值为绿色即成功
3 .安装Ik分词器
ElasticSearch 默认采用的分词器, 是单个字分词 ,效果很差 ,所以我们需要安装一个更实用的分词器,这里采用IK分词器
(1)解压到Elasticsearch主文件下plugins下的一个新建文件夹,我们起名为ik
例:解压到D:\elasticsearch-6.2.4\plugins\ik
(2)重启elasticsearch主文件和客户端工具
正常能通过
且
http://127.0.0.1:9100/健康值仍为绿色,成功