Elasticsearch介绍和安装
Elasticsearch
1.简介
1.1基本概念
Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。
对比关系:
索引库(indices)--------------------------------Databases 数据库
类型(type)-----------------------------Table 数据表
文档(Document)----------------Row 行
字段(Field)-------------------Column 列
详细说明:
概念 | 说明 |
---|---|
索引库(indices) | indices是index的复数,代表许多的索引, |
类型(type) | 型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念 |
文档(document) | 存入索引库原始的数据。比如每一条商品信息,就是一个文档 |
字段(field) | 文档中的属性 |
映射配置(mappings) | 字段的数据类型、属性、是否索引、是否存储等特性 |
是不是与Lucene中的概念类似。
另外,在Elasticsearch有一些集群相关的概念:
- 索引集(Indices,index的复数):逻辑上的完整索引
- 分片(shard):数据拆分后的各个部分
- 副本(replica):每个分片的复制
要注意的是:Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡(负载均衡)。
1.2.Elastic
Elastic官网:https://www.elastic.co/cn/
Elastic有一条完整的产品线:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。
1.3 Elasticsearch
Elasticsearch官网:https://www.elastic.co/cn/products/elasticsearch
如上所述,Elasticsearch具备以下特点:
- 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
- Restful风格,一切API都遵循Rest原则,容易上手
- 近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。
1.4 版本
目前Elasticsearch最新的版本是6.4.1,我们使用这个版本6.2.4
需要JDK1.8及以上
1.2.安装和配置
1.2.1 下载
下载地址:https://www.elastic.co/downloads/past-releases
1.2.2 安装
elasticsearch无需安装,解压即用。
代码访问:9300
代码访问:9300
1.3.运行
进入elasticsearch/bin目录,可以看到下面的执行文件:
双击运行
可以看到绑定了两个端口:
- 9300:java程序访问的端口
- 9200:浏览器、postman访问接口
我们在浏览器中访问:http://127.0.0.1:9200
1.4.安装Head插件
1.4.1.什么是Head
ealsticsearch只是后端提供各种api,那么怎么直观的使用它呢?elasticsearch-head将是一款专门针对于elasticsearch的客户端工具,类似mysql的sqlyog或者navicat
elasticsearch-head配置包,下载地址:https://github.com/mobz/elasticsearch-head
1.4.2.安装
- es5以上版本安装head需要安装node和grunt
第一步:从地址:https://nodejs.org/en/download/ 下载相应系统的msi,双击安装。
第二步:安装完成用cmd进入安装目录执行 node -v可查看版本号
第三步:执行 npm install -g grunt-cli 安装grunt ,安装完成后执行grunt -version查看是否安装成功,会显示安装的版本号
第四步:进入E:\environment2\elasticsearch-head-master文件夹,执行npm install命令
第五步:运行head插件,下面命令二选一
- 命令一:npm run start
- 命令二:grunt server
第六步:
1.4.3.配置运行
第一步:进入es安装目录下的config目录,修改elasticsearch.yml文件.在文件的末尾加入以下代码
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的注释(也就是去掉#)
第二步:双击elasticsearch.bat重启es
(下面步骤直接忽略)
第三步:在https://github.com/mobz/elasticsearch-head中下载head插件,选择下载zip
第四步:解压到指定文件夹下,D:\environment\elasticsearch-head-master 进入该文件夹,修改D:\environment\elasticsearch-head-master\Gruntfile.js 在对应的位置加上hostname:’*’、
第五步:在D:\environment\elasticsearch-head-master 下执行npm install 安装完成后执行grunt server 或者npm run start 运行head插件,如果不成功重新安装grunt。成功如下
1.4.4.成功
1.5.安装ik分词器
ElasticSearch 默认采用分词器, 单个字分词 ,效果很差
搜索【IK Analyzer 3.0】
http://www.oschina.net/news/2660
Lucene的IK分词器早在2012年已经没有维护了,现在我们要使用的是在其基础上维护升级的版本,并且开发为Elasticsearch的集成插件了,与Elasticsearch一起维护升级,版本也保持一致,最新版本:6.2.4
1.5.1.下载
源码下载地址:https://github.com/medcl/elasticsearch-analysis-ik/tree/6.2.x
jar包下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
每个es版本对应的ik分词器jar包下载位置:https://github.com/medcl/elasticsearch-analysis-ik/releases
使用ik分词器的时候,一定要下载对应es版本的jar包
1.5.2.安装
无需安装,解压即可使用
我们将其改名为ik,并复制到elasticsearch的解压目录,如下图所示
然后重启elasticsearch:
1.5.3.扩展词和停用词
扩展词和停用词文件:
1.5.4 测试
好啦!以上就是小编的内容啦,如果错误!欢迎在下方评论哦!!!