1 本地安装
2 使用docker-compose
前提已安装好docker和docker-compose,且已启动docker服务
所使用镜像是hub.docker.com
的elasticsearch:7.9.3
和kibana:7.9.3
,不用提前docker pull,编写好docker-compose.yml后,直接通过docker-compose up启动时会自动拉取
2.1 单结点elasticsearch
2.1.1 环境准备
调整用户 mmap 计数,否则启动时可能会出现内存不足的情况
# 查看当前限制
[root@zhangsan elasticsearch]# sysctl vm.max_map_count
vm.max_map_count = 65530
临时修改 - 不需要重启
[root@zhangsan elasticsearch]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
永久修改 - 需要重启
vi /etc/sysctl.cof
# 增加 如下内容
vm.max_map_count = 262144
2.1.2创建项目目录
----elasticsearch
----docker-compose.yml
----es
----data
----config
----logs
----plugins
----ik
----pinyin
----kibana
修改权限,否则启动过程会报错
[root@zhangsan es]# chmod -R 777 data
[root@zhangsan es]# chmod -R 777 config
在es/config下创建elasticsearch.yml文件,内容如下:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
elasticsearch.yml内容应该也可以为空(本文未测试,只是猜想)
,因为对于配置内容也可以在docker-compose.yml的environment来设置,本文采用的也是该种方式。
不论elasticsearch.yml是否为空,conf下该文件都必须存在,因为docker-compose.yml中通过volumes进行了设置,否则启动时会报错。
2.1.3 编写docker-compose.yml
docker-compose.yml
version: "3"
services:
elasticsearch:
image: elasticsearch:7.9.3
container_name: elasticsearch
ports:
- 9200:9200
volumes:
- ./data:/usr/share/elasticsearch/data:rw
- ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:rw
- ./logs:/usr/share/elasticsearch/logs:rw
- ./plugins:/usr/share/elasticsearch/plugins:rw
networks:
mynet:
ipv4_address: 172.16.22.2
# restart: always
environment:
- cluster.name=es-cluster # 集群名
- node.name=zhangsan # 结点名
- node.data=true # 指定该节点是否存储索引数据,默认为true。
- bootstrap.memory_lock=true # 需求锁住物理内存,是:true、否:false
- http.cors.enabled=true # 是否支持跨域,是:true,在使用head插件时需要此配置
- http.cors.allow-origin=* # "*" 表示支持所有域名
- http.port=9200
# 主机访问的端口号
- network.host=0.0.0.0
- ES_JAVA_OPTS=-Xms512m -Xmx512m # 设置使用jvm内存大小
- discovery.type=single-node # 以单一节点模式启动
ulimits: # 取消内存相关限制 用于开启内存锁定
memlock:
soft: -1
hard: -1
# kibana:
# image: kibana:7.9.3
# container_name: kibana
# ports:
# - 5601:5601
# volumes:
# - ./kibana_config/:/usr/local/kibana/config
# networks:
# mynet:
# ipv4_address: 172.16.22.3
# restsrt: always
# environment:
# - ELASTICSEARCH_HOSTS= http://172.16.22.2:9200
# - I18N_LOCALE=zh-CN
# - XPACK_GRAPH_ENABLED=true
# - TIMELION_ENABLED=true
# - XPACK_MONITORING_COLLECTION_ENABLED=true
# depends_on:
# - elasticsearch
networks:
mynet:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.16.22.0/24
gateway: 172.16.22.1
此处没有启动kibana,每次启动导致失败,猜测可能是由于服务器内存(1G)太小导致,因此此处只启动elasticsearch。
由于服务端不能启动kibana,此处采用在本地启动kibana。启动容器后,在本地下载相应版本的kibana,解压,修改D:\Program Files\kibana-7.9.3-windows-x86_64\config\kibana.yml配置文件,修改如下:
elasticsearch.hosts: ["http://服务器的外网IP:9200"]
服务器elasticsearch启动成功后,进入本地D:\Program Files\kibana-7.9.3-windows-x86_64\bin目录,双击kibana.bat,启动kibana。
注意服务器需要通过firewarll-cmd打开9200,5601端口,且服务器安全组也需要打开9200,5601端口。
2.1.5 安装elasticsearch-analyze-ik和elasticsearch_analyze_pinyin
两种安装方法:
- 启动容器后进入容器,然后进入/usr/share/elasticsearch/bin下,执行以下命令
不建议使用该方法,github下载速度太慢,容易出错。而且采用该方法安装完成后需要重启ES。./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip ./elasticsearch-plugin insatll https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.9.3/elasticsearch-analysis-pinyin-7.9.3.zip
- 直接到相应地址下载,然后解压到elasticsearch/plugins/ik和elasticsearch/plugins/pinyin,然后通过docker-compose up启动elasticsearch容器
这两个插件的版本必须与elasticsearch的版本相同
此处采用下载解压的方法:
elasticsearch-analysis-ik-7.9.3.zip
elasticsearch-analysis-pinyin-7.9.3.zip
1 下载ik和pinyin压缩包到本地
2 上传解压
[root@zhangsan ik]# rz # 通过rz 将下载到本地的elasticsearch-analysis-ik-7.9.3.zip传到服务器
[root@zhangsan ik]# unzip elasticsearch-analysis-ik-7.9.3.zip # 解压
[root@zhangsan pinyin]# rz # 通过rz 将下载到本地的elasticsearch-analysis-pinyin-7.9.3.zip传到服务器
[root@zhangsan pinyin]# unzip elasticsearch-analysis-pinyin-7.9.3.zip # 解压
2.1.4 启动容器
使用该命令可以查看启动过程是否出错
docker-compose up
也可以使用以下命令,只不过不能看到启动过程的详细信息
docker-compose up -d
2.1.5 测试是否启动成功
1 测试elasticsaerch容器是否启动成功
1.1 在服务端测试
(base) [root@zhangsan elasticsearch]# curl 127.0.0.1:9200
{
"name" : "zhangsan",
"cluster_name" : "es-cluster",
"cluster_uuid" : "uE4YqkzvSn-x2Noug563tg",
"version" : {
"number" : "7.9.3",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
"build_date" : "2020-10-16T10:36:16.141335Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
说明elasticsaerch容器已成功启动
1.2 在本地此时
本地浏览器访问http://服务器外网地址:9200,查看是否成功。若没有成功,说明服务器没有打开9200端口或服务器安全组没有打开9200端口。
2 测试ik是否成功
2.1 在服务器测试
[root@zhangsan elasticsearch]# curl -H 'Content-Type: application/json' -XGET '127.0.0.1:9200/_analyze?pretty=true' -d '{"analyzer":"ik_max_word","text":"中华人民共和国"}'
{
"tokens" : [
{
"token" : "中华人民共和国",
"start_offset" : 0,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "中华人民",
"start_offset" : 0,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "中华",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "华人",
"start_offset" : 1,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "人民共和国",
"start_offset" : 2,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "人民",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 5
},
{
"token" : "共和国",
"start_offset" : 4,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 6
},
{
"token" : "共和",
"start_offset" : 4,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 7
},
{
"token" : "国",
"start_offset" : 6,
"end_offset" : 7,
"type" : "CN_CHAR",
"position" : 8
}
]
}
2.2 在本地通过命令行测试,不建议,一般会因为cmd字符集的问题导致请求其体中含有中文时会报错,目前没有找到解决方案。
curl -H 'Content-Type: application/json' -XGET '117.51.150.116:9200/_analyze?pretty=true' -d '{"analyzer":"ik_max_word","text":"中华人民共和国"}'
此处要注意的是curl命令,在windows和linux中稍有不同。在linux中使用单引号[ '
]的地方windowns中使用双引号[ "
],在linux中使用双引号[ "
]的地方windowns中使用三个双引号[ """
]。
2.3 在本地通过浏览器使用kibana测试,建议使用。
若采用的是在服务器启用kibana容器,浏览器中访问http://服务器IP:5601
若采用的是在本地启用kibana服务,浏览器中访问http://127.0.0.1:5601,此处采用的是该方法。
表明ik安装成功。