ElasticSearch的安装与使用+学习随记

ElasticSearch搜索技术

一、简介
1.1 what is ElasticSearch(ES)?
百度解释:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
上面这段能看出什么?简单理解就是一个兼具分布式能力、实时性、高扩展的高速搜索引擎。在网络中进行搜索可以简单理解为提前将海量的数据存储到数据库上,然后根据用户查询指令进行工作的一项服务,但后续使用中感觉和传统的关系数据库(Mysql、Oracle、MongoDB)等还是有很大区别的。

1.2 安装与启动
由于ES是基于Java开发的,所以安装前请确认已经配置好java环境,具体请自行百度。

前往官方网站进行下载:ES下载页面,可以选择最新版本和历史版本进行下载,软件更新速度很快,这里我演示的版本以6.6.0为例,其他版本类似,但不建议选择5.5之前版本,看了一些网上的资料说5.5之前版本语法和现在不太一样。
解压到任一目录,我的是放在D盘根目录下
点进去看看目录里都有哪些文件
ElasticSearch的安装与使用+学习随记_第1张图片
和Tomcat很像不是吗?我第一次安装完也是这种感觉,同样它的启动也和Tomcat相类似,只要启动bin文件下的bat服务就行

ElasticSearch的安装与使用+学习随记_第2张图片
这样就成功启动了ES服务了,这里注意一下启动过程中会有几个端口号出现,9300是TCP通讯端口,是负责集群间和TCPclient中的执行端口,9200是我们的http协议中的RESTful接口,我们打开浏览器输入127.0.0.1:9200成功访问
ElasticSearch的安装与使用+学习随记_第3张图片

2.图形界面插件安装
和mysql相类似,安装后只能进行命令行的操作,十分不方便,所以也有和其配套的图形界面插件elasticsearch-head-master,下载es图形界面插件
下载后解压到任一目录,但是不要放到es的安装目录下面,我放在了和es同级的d盘根下
在这里插入图片描述
要想使用插件,还需要安装nodejs,官方网站nodejs,网站可能会打不开,请网盘自取链接:https://pan.baidu.com/s/1ii5kN6CdD_HMJlZFI4L9Jg
提取码:3k1u
在这里插入图片描述
一路next即可,其中倒数第二步会出一个选项,我打勾了,具体什么意思不用知道。
安装好cmd输入node -v出现版本号就是安好了。在这里插入图片描述
cmd中使用npm install ‐g grunt‐cli命令将grunt安装为全局命令,grunt是一个基于nodejs的项目构建工具,这里第一次安装会出很多问题,解决办法请自行搜索,我在安装的时候不知为什么用家里网线安得极慢,改用手机流量开热点的方法来下载反倒是挺快的,当遇到下载不动的情况可以尝试下。
卡死不动的情况
执行后完成了的样子应当是这样,具体版本不用在意,应该到1.3.2了,这图片是网上找的,我安装时候忘了截了。
在这里插入图片描述
之后cd到elasticsearch-head-master目录启动head,在命令提示符下分别输入以下两个命令:

npm install

第一个命令会联网下载一堆包之类的文件,同样可能会很慢,试试开手机热点来下载,同时当下载到PhantomJS这个文件的时候有可能会很慢很慢,可以将该文件先下载下来,并且加入进环境变量后再来进行此步骤速度就会很快了,这里提供phantomJs文件,请自取
链接:https://pan.baidu.com/s/1xeeW5NZbcvfjEwbHsEONFA
提取码:hmgc

grunt server
这条命令是用来启动grunt服务的,也就是es的head文件可以使用了,或者npm start命令也可以启动

grunt启动成功
打开浏览器输入 http://localhost:9100看到下面界面就是代表成功了。
在这里插入图片描述
如果不能成功连接到es服务,需要修改es的config目录下的配置文件:config/elasticsearch.yml,增加 以下两句命令:
http.cors.enabled: true
http.cors.allow‐origin: “*” (注意这里的-是英文的-)
ElasticSearch的安装与使用+学习随记_第4张图片
然后重启es服务即可

二、倒排索引和正排索引
一般的数据库检索遵循的都是正排索引,我对正排索引的理解是这样的:

对象 属性
1 年轻人,研究生,计算机专业
2 中年人,公务员,已婚
3 男,青年,爱唱歌
4 女青年,化妆,经常逛街
5 ipad,电子产品,效率工具

我来解释一下上面这张表格所传达的意思,同时也是我对正排索引的理解,按照万物皆对象的说法,这里的对象类比于关系数据库中的某个记录的主键,反正就是你在数据库里一查就能正确找到某个记录的东西,查到的内容包含很多Tag(标签),但我本人更愿意管它叫属性,这样也好和对象对应上,正排索引就是用对象去找它所包含的属性,比如我在百度上搜毛不易,网页会响应我很多他最新的动态、出的新歌、他的一些人物特征,这些也就是属性了;那么倒排索引呢?很简单,把前面这个概念反过来,用属性去找对象,也就是下边这张表:

属性 对象
苹果电脑,格子衫,头发少 程序员
限量版口红,时尚包包 漂亮小姐姐
华为手机,皮鞋 商务男
西服、领带、员工吊牌 中介

你看,所谓的倒排索引就是用属性或者说是标签去找对象,这就和传统的关系数据库不同了,也是在ES当中非常基础且重要的概念,像搜索引擎中所使用的就多为倒排索引,比如你要搜索流浪地球这部电影,可能你在输入的过程中少打或是错打了个字,但是搜索引擎也会为你找到流浪地球的页面,其实这就是倒排索引的体现。
ElasticSearch的安装与使用+学习随记_第5张图片

你可能感兴趣的:(ElasticSearch的安装与使用+学习随记)