一、介绍:
ElasticSearch
是一个基于Lucene
的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb
接口。
ElasticSearch
是用Java
开发的,并作为Apache
许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。构建在全文检索开源软件Lucene
之上的ElasticSearch
,不仅能对海量规模的数据完成分布式索引与检索,还能提供数据聚合分析。
总的来说就是:ElasticSearch
是基于Restful
标准的高扩展高可用的实时数据分析的全文搜索工具。
ElasticSearch | MySQL |
---|---|
index | database |
type | table |
document | ES一条数据对应一篇文档即相当于mysql数据库中的一行数据row,一个文档中可以有多个字段也就是MySQL 数据库一行可以有多列 |
field | ES中一个文档中对应的多个列与mysql数据库中每一列对应 |
mapping | mysql或者solr中对应的schema |
indexed | MySQL的索引 |
Query DSL | MySQL的sql语句,只不过在ES中是使用的json格式的查询语句 |
GET/PUT/POST/DELETE | 分别类似与MySQL中的select/update/delete |
二、ElasticSearch
环境:CentOS 7(4G内存、防火墙已关闭)、jdk1.8、elasticsearch-6.5.4
下载:elasticsearch-6.5.4.tar.gz 猛击这里
[root@localhost install-package]# tar -zxvf elasticsearch-6.5.4.tar.gz -C /usr/local/
[root@localhost local]# mv elasticsearch-6.5.4/ elasticsearch
1、由于ES
从5.0版本开始就提高安全级别了,不允许root
用户去启动,因此需要加一个用户
[root@localhost local]# groupadd esgroup
[root@localhost local]# useradd zhaoyoung -g esgroup -p espassword
更改elasticsearch文件夹及内部文件的所属用户及组:
[root@localhost local]# cd /usr/local/
[root@localhost local]# chown -R zhaoyoung:esgroup elasticsearch
切换用户
[root@localhost local]# su zhaoyoung
2、启动
[root@localhost local]# cd elasticsearch/bin/
# 前台启动
[root@localhost local]# ./elasticsearch
# 或者后台启动一
[root@localhost local]# ./elasticsearch -d
# 或者后台启动二
[root@localhost local]# nohup ./bin/elasticsearch &
如果报错
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
第一个问题解决方法:
错误意思:每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
[root@localhost elasticsearch]$ ulimit -Hn
4096
[root@localhost elasticsearch]$ ulimit -Sn
1024
修改/etc/security/limits.conf
,增加之后用户退出后再重新登录即可生效
[root@localhost elasticsearch]# vim /etc/security/limits.conf
增加配置
* soft nofile 65536
* hard nofile 65536
第二个问题解决方法:
增加配置:vm.max_map_count=262144
[root@localhost bin]# vim /etc/sysctl.conf
# 执行生效
[root@localhost bin]# sysctl -p
vm.max_map_count = 262144
3、测试
[root@localhost /]# curl 127.0.0.1:9200
{
"name" : "Qt71Y3N",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "S0dYCybjQe6b0d_4ZQ1juw",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
4、设置为能远程访问
[root@localhost /]# cd /usr/local/elasticsearch
[root@localhost elasticsearch]# cd config/
[root@localhost config]# ls
analysis-ik elasticsearch.keystore elasticsearch.yml jvm.options log4j2.properties role_mapping.yml roles.yml users users_roles
[root@localhost config]# vim elasticsearch.yml
将#network.host: 192.168.0.1
改为network.host: 0.0.0.0
或network.host: 本机ip
如果防火墙没关闭,可 systemctl stop firewalld.service
进行关闭
或者打开端口 firewall-cmd --zone=public --add-port=9200/tcp --permanent
并重启 firewall-cmd --reload
三、elasticsearch-head
elasticsearch-head
是elasticsearch
的集群管理工具,可以用于数据的浏览和查询
(1)elasticsearch-head是一款开源软件,被托管在github上面,所以如果我们要使用它,必须先安装git,通过git获取elasticsearch-head;
(2)运行elasticsearch-head会用到grunt,而grunt需要npm包管理器,所以nodejs是必须要安装的;
(3)elasticsearch5.0之后,elasticsearch-head不做为插件放在其plugins目录下了。使用git拷贝elasticsearch-head到本地。
因此,需要先安装nodejs
1、安装
[root@localhost install-package]# wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.xz
[root@localhost install-package]# xz -d node-v10.15.0-linux-x64.tar.xz
[root@localhost install-package]# tar -xvf node-v10.15.0-linux-x64.tar -C /usr/local/
[root@localhost local]# mv node-v10.15.0-linux-x64/ node
[root@localhost local]# cd node/bin/
[root@localhost bin]# ls
cnpm grunt node npm npx
# 查看nodejs版本
[root@localhost bin]# ./node -v
v10.15.0
2、配置
[root@localhost local]# vim /etc/profile
# 加入以下路径
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
[root@localhost local]# source /etc/profile
3、重启系统,检查版本
[root@localhost local]# node -v
v10.15.0
[root@localhost local]# npm -v
6.4.1
4、安装elasticsearch-head
[root@localhost local]# yum install -y bzip2
[root@localhost local]# cd /usr/local
[root@localhost local]# git clone https://github.com/mobz/elasticsearch-head.git
[root@localhost local]# npm install -g grunt-cli
[root@localhost local]# npm install cnpm -g --registry=https://registry.npm.taobao.org
[root@localhost elasticsearch-head]# cd elasticsearch-head/
[root@localhost elasticsearch-head]# cnpm install
[root@localhost elasticsearch-head]# vim Gruntfile.js
connect: {
server: {
options: {
hostname: '*', # 加入这一行,允许所有ip都可访问
port: 9100,
base: '.',
keepalive: true
}
}
}
[root@localhost elasticsearch-head]# cd _site/
[root@localhost _site]# vim app.js
# 找到“http://localhost:9200”并改成ES的服务器地址
5、启动elasticsearch-head
[root@localhost elasticsearch-head]# node_modules/grunt/bin/grunt server
浏览器访问http://192.168.1.24:9100/
三、Kibana
Kibana
是一个针对Elasticsearch
的开源分析及可视化平台,使用Kibana
可以查询、查看并与存储在ES
索引的数据进行交互操作,使用Kibana
能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。
1、下载
Kibana官网下载 猛击这里
kibana-6.5.4-linux-x86_64.tar.gz 百度网盘下载 猛击这里
提取码:mzqf
2、安装
[root@localhost install-package]# tar -zxvf kibana-6.5.4-linux-x86_64.tar.gz -C /usr/local/
[root@localhost local]# mv kibana-6.5.4-linux-x86_64/ kibana
[root@localhost local]# cd kibana/config/
[root@localhost config]# vim kibana.yml
修改kibana.yml
# 将全文替换成以下内容
# Kibana默认端口
server.port: 5601
# 所在服务器的ip地址
server.host: "192.168.1.24"
# ES所在服务器的ip地址
elasticsearch.url: "http://192.168.1.24:9200"
kibana.index: ".kibana"
开启防火墙:systemctl start firewalld.service
开启5601端口:firewall-cmd --permanent --zone=public --add-port=5601/tcp
重启防火墙:firewall-cmd –reload
3、启动
[root@localhost /]# /usr/local/kibana/bin/kibana
4、访问
浏览器打开 http://192.168.1.24:5601
三、中文分词
1、安装
GitHub地址
猛击这里
官方提供了两种安装方式,这里我们选择第二种
[zhaoyoung@localhost local]$ cd elasticsearch/bin/
[zhaoyoung@localhost bin]$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
然后重启ES
,在启动日志中可以看到loaded plugin [analysis-ik]