CentOS 7.3 离线安装ElasticSearch和kibana
本文是基于CentOS 7.3系统环境,安装和测试GitLab:
一、ElasticSearch的概念
1. 介绍
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
2. 特点
索引集:逻辑上的完整索引
分片:数据拆分后的各个部分
副本:每个分片的拷贝
二、安装前的准备工作
1. 下载安装包
2. 新建用户
- 出于安全考虑,ES默认不允许以root用户运行
useradd bailang
passwd bailang
su - bailang
3. 解压压缩包
- 修改压缩包的权限
chown bailang:bailang elasticsearch-6.2.4.tar.gz
tar -xzvf elasticsearch-6.2.4.tar.gz
mv elasticsearch-6.2.4.tar.gz elasticsearch
4. 配置
- 配置JVM堆内存大小
cd elasticsearch/config
vi jvm.options
## 设置为电脑总内存的一半
-Xms4g
-Xmx4g
tar -xzvf elasticsearch-6.2.4.tar.gz
mv elasticsearch-6.2.4.tar.gz elasticsearch
- 配置elasticsearch.yml
cd elasticsearch/config
vi elasticsearch.yml
## 设置为电脑总内存的一半
path.data: /home/bailang/elasticsearch/data
path.logs: /home/bailang/elasticsearch/logs
network.host 0.0.0.0
- 配置max file descriptors
su root
vi /etc/security/limits.comf
# 在最后添加配置信息
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
- 配置虚拟内存 max virtual memory area
vi /etc/sysctl.conf
#
vm.max_map_count=655360
- 执行sysctl命令
sysctl -p
- 创建data目录
su bailang
mkdir data
- 开放防火墙9200端口
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --reload
- 安装IK分词器插件
- elasticsearch-analysis-ik-6.2.4
cp elasticsearch-analysis-ik-6.2.4.zip /home/bailang/elasticsearch/plugins
unzip elasticsearch-analysis-ik-6.2.4.zip
mv elasticsearch ik-analyzer
- 重启计算机,并重新建立ssh连接
shutdown -r now
5. 运行
- 切换bailang用户
su bailang
cd /bin
./elasticsearch
6. 安装kibana
yum install -y kibana-6.0.0-x86_64.rpm
7. 修改配置
- kibana.yml
vi /etc/kibana/kibana.yml
##
server.port: 5601
server.host: "192.168.1.31"
elasticsearch.url: "http://192.168.0.206:9200"
- 开放防火墙5601端口
firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd --reload
- 开启服务
systemctl enable kibana
systemctl start kibana
三、ElasticSearch的用法
1. 创建索引
- 请求方式: PUT
- 请求路径: /索引库名
- 请求参数: json格式
# number_of_shards: 分片数量
# number_of_replicas: 副本数量
{
"settings":{
"number_of_shards": 3,
"number_of_replicas": 2
}
}
2. 查询索引
- 请求方式: GET
- 请求路径: /索引库名
GET /zs200
3. 删除索引
- 请求方式: DELETE
- 请求路径: /索引库名
DELETE /zs200
4. 创建映射字段
- 请求方式: PUT
- 请求路径: /索引库名/_mapping/类型名称
- 请求参数: json格式
{
"properties":{
"字段名": {
"type": "类型",
"index": true, # 影响字段索引情况
"store": false, # 是否将数据进行额外存储
"analyzer": "分词器",
}
}
}
## 商品实例
PUT /zs200/_mapping/goods
{
"properties":{
"title": {
"type": "text",
"analyzer": "ik_max_word",
},
"images": {
"type": "keyword",
"index": false,
},
"price": {
"type": "float"
}
}
}
5. 数据类型
- 字符型
text # 字符,可分词
keyword # 字符,不可分词
- 数字型
long
integer
short
byte
double
float
half_float
scaled_float
- 日期型
date
- 布尔型
boolean
- 二进制型
binary
- 区间型
long_range
integer_range
date_range
double_range
float_range
- 数组型
Array
- 对象型
Object
- Nested型
Nested
6. 新增数据
- 随机生成id
POST /索引库名/类型名
{
"key":"value"
}
POST /zs200/goods/
{
"title":"小米手机",
"images":"http://192.168.0.140/222.png",
"price":2399.00
}
- 指定id
POST /索引库名/类型名/id
{
"key":"value"
}
POST /zs200/goods/1
{
"title":"大米手机",
"images":"http://192.168.0.140/233.png",
"price":2999.00
}
7. 查询数据
GET /索引库名/类型名/1
# 查询所有
GET /zs200/_search
{
"query":{
"match_all":{}
}
}
8. 修改数据
PUT /索引库名/类型名/1
# 查询所有
PUT /zs200/goods/1
{
"title":"超大米手机",
"images":"http://192.168.0.140/233.png",
"price":3999.00
}
9. 删除数据
DELETE /索引库名/类型名/1
# 查询所有
DELETE /zs200/goods/1
10. 基本查询
GET /索引库名/_search
{
"query":{
"查询类型":{
"查询条件":"查询条件值"
}
}
}
- 查询类型
match_all, match, term, range等
GET /zs200/_search
{
"query":{
"match":{
"title":{
"query":"大米手机",
"operator":"and"
}
}
}
}
11. 多字段查询
GET /zs200/_search
{
"query":{
"multi_match":{
"query":"小米",
"fields": ["title", "subTitle"]
}
}
}
12. 词条匹配
# 面向不分词的类型
GET /zs200/_search
{
"query":{
"term":{
"price":2699.00
}
}
}
13. 结果过滤
GET /zs200/_search
{
"_source":"title",
"query":{
"match":{
"title":"大米手机"
}
}
}