Elasticsearch(一)
1 Elasticsearch简介
1.1 Elasticsearch介绍
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
1.2倒排索引
倒排索引:
将数据加入到索引库(你可以理解成另外一个数据库)时,会先提取数据中的词汇(分词),将词汇加入到文档域,文档域中记录了词汇以及词汇在哪条数据记录中出现过的数据下标。用户在搜索数据时,先将用户搜索的数据进行词汇提取,然后把对应词汇拿到索引域中进行匹配查找,查找后会找到对应的下标ID,再根据对应下标ID到文档域中找真实数据。
1.2.1 基本倒排索引
- 第1列单词ID即为每个单词的编号。
- 第2列即为对应的单词。
- 第3列即为每个单词对应的倒排列表。(比如单词“拉斯”,单词编号为8,倒排序表为{3,5},说明文档集合中文档3和文档5包含这个单词。)
1.2.2 复杂倒排索引
就编号8—拉斯—2—{(3;1;<4>),(5;1;<4>)}来说,文档频率2表示在两个文档出现。“<4>”表示单词出现的位置是文档中的第4个单词。 这个倒排索引基本上是一个完备的索引系统了,实际搜索系统的索引结构基本如此。
1.2.3 完整倒排索引
就编号8—拉斯—2—{(3;1;<4>),(5;1;<4>)}来说,文档频率2表示在两个文档出现。“<4>”表示单词出现的位置是文档中的第4个单词。 这个倒排索引基本上是一个完备的索引系统了,实际搜索系统的索引结构基本如此。
2、Elasticsearch安装
2.1 下载安装包
ElasticSearch的官方地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
可在网盘下载
es网盘资料下载
提取码:09oy
2.2 安装es服务
环境要求:jdk版本1.8以上,所以安装ElasticSearch之前保证JDK1.8+安装完毕,并正确的配置好JDK环境变量,否则启动ElasticSearch失败。
2.2.1 解压
ElasticSearch的安装很简单,解压开即安装完毕(注意:ES的目录不要出现中文,也不要有特殊字符),ElasticSearch的目录结构如下:
2.2.2 启动服务
-
第一步:进入bin目录下,执行elasticsearch.bat文件
-
第二步:闪退(可以将elasticsearch.bat文件在cmd命令窗口下执行,目的:查看错误信息。。。)【错误信息:VM初始化期间发生错误,无法为2097152KB(2G)对象堆保留足够的空间】
- 第三步:修改es配置文件jvm.options(Xms:初始化堆内存大小 Xmx:最大堆内存大小)
-
第四步:重新执行elasticsearch.bat文件,启动成功
- 9300端口:ES集群节点之间通讯使用(Tcp协议 )
- 9200端口:ES节点和外部通讯使用 (Http协议)
-
第五步:通过浏览器访问:http://localhost:9200/
2.3 安装es图形化管理界面-head
ElasticSearch不同于Solr自带图形化管理界面,我们可以通过安装ElasticSearch的head插件,完成图形化界面的效果,完成索引数据的查看。安装插件的方式有两种,在线安装和本地安装。现采用在线的安装。elasticsearch-5-*以上版本安装head插件需要安装node和grunt环境。
2.3.1 安装nodejs环境
下载nodejs:https://nodejs.org/en/download/
- 执行资料中的node-v8.9.4-x64.msi文件,然后傻瓜式安装(一直下一步,直到完成。)
- 安装成功,可通过cmd窗口查看版本:node -v
2.3.2 安装grunt客户端
Grunt是基于Node.js的项目构建工具;是基于javaScript上的一个很强大的前端自动化工具,基于NodeJs用于自动化构建、测试、生成文档的项目管理工具。
-
方案:可以通过镜像加速器去下载
-
先安装:安装taobao镜像:npm install -g cnpm –registry=https://registry.npm.taobao.org
-
进入命令行,执行命令:
-
- 再执行:cnpm install -g grunt-cli 【注意:npm命令前多了一个字符c】
2.3.3 安装head插件
安装步骤
-
第一步:下载head插件:https://github.com/mobz/elasticsearch-head ,在资料中已经提供了elasticsearch-head-master插件压缩包
-
第二步:软件解压:可以解压到任意目录,我这里是解压到es的目录下(注意不要放到plugins目录)
- 第三步:进入到elasticsearch-head-master目录下,通过cmd窗口执行如下命令:cnpm install grunt
- 第四步:启动grunt,执行命令:grunt server,提示是否安装这些模块
-
第五步:按照要求,继续安装npm的其他模块,执行命令:
cnpm install grunt-contrib-clean grunt-contrib-concat grunt-contrib-watch grunt-contrib-connect grunt-contrib-copy grunt-contrib-jasmine
-
第六步:再次启动grunt服务。执行命令:grunt server
-
第七步:通过浏览器访问。http://localhost:9100/
- 第八步:解决跨域访问的问题
-
修改es配置:修改config/elasticsearch.yml文件,添加如下配置
# 允许elasticsearch跨域访问,默认是false http.cors.enabled: true # 表示跨域访问允许的域名地址(*表示任意) http.cors.allow-origin: "*" # 当前主机域名 network.host: 127.0.0.1
- 重新es服务:
至此,我们的es的服务安装成功
3、Elasticsearch相关术语介绍
3.1 概述
Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储(store),还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearch比较传统关系型数据库如下:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
3.2 相关术语
3.2.1 索引 index
一个索引就是一个拥有几分相似特征的文档的集合。
3.2.2 类型 type
在一个索引中,你可以定义一种或多种类型。