目录
1、 编辑docker-compose.yml 文件
version: '3'
services:
elasticsearch:
image: elasticsearch:7.3.2
container_name: elasticsearch
network_mode: host
restart: always
volumes:
- /etc/localtime:/etc/localtime
# - ./esdata:/usr/share/elasticsearch
environment:
- discovery.type=single-node
#下面这些参数若放开则会覆盖elasticsearch.yml和jvm.options的参数
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms2G -Xmx2G
- "http.cors.enabled=true"
- "http.cors.allow-origin=*"
- indices.memory.index_buffer_size=20%
- indices.query.bool.max_clause_count=100000000
ports:
- "9200:9200"
- "9300:9300"
es-head:
image: mobz/elasticsearch-head:5
container_name: elasticsearch-head
network_mode: host
restart: always
#volumes:
# - ./headdata:/usr/src/app/_site
ports:
- 9100:9100
2、 启动es和eshead(eshead映射出来是因为查询不到数据需要修改js),并把目录映射出来
[root@test1 es]# docker-compose up -d
[root@test1 es]# docker cp elasticsearch:/usr/share/elasticsearch/ esdata/
[root@test1 es]# ll esdata/
总用量 552
drwxr-xr-x 2 root root 4096 9月 6 2019 bin
drwxrwxr-x 2 root root 4096 3月 10 16:11 config
drwxrwxr-x 3 root root 4096 3月 10 16:11 data
drwxr-xr-x 8 root root 4096 9月 6 2019 jdk
drwxr-xr-x 3 root root 4096 9月 6 2019 lib
-rw-r--r-- 1 root root 13675 9月 6 2019 LICENSE.txt
drwxrwxr-x 2 root root 4096 3月 10 16:11 logs
drwxr-xr-x 33 root root 4096 9月 6 2019 modules
-rw-r--r-- 1 root root 502598 9月 6 2019 NOTICE.txt
drwxr-xr-x 2 root root 4096 9月 6 2019 plugins
-rw-r--r-- 1 root root 8500 9月 6 2019 README.textile
[root@test1 es]# docker cp elasticsearch-head:/usr/src/app/_site headdata
[root@test1 es]# ll headdata/
总用量 652
-rw-r--r-- 1 root root 14908 2月 22 2016 app.css
-rw-r--r-- 1 root root 143298 1月 6 2017 app.js
drwxr-xr-x 2 root root 4096 11月 3 2015 base
drwxr-xr-x 2 root root 4096 11月 3 2015 fonts
-rw-r--r-- 1 root root 2860 6月 28 2016 i18n.js
-rw-r--r-- 1 root root 1043 1月 6 2017 index.html
drwxr-xr-x 2 root root 4096 1月 6 2017 lang
-rw-r--r-- 1 root root 21643 2月 22 2016 vendor.css
-rw-r--r-- 1 root root 459905 2月 22 2016 vendor.js
[root@test1 es]#
3、 修改配置文件
3.1 修改 ElasticSearch内存:
[elasticsearch@test1 ~]$ vim esdata/config/jvm.options
3.2 修改esdata/config/elasticsearch.yml
cluster.name: "docker-cluster"
#可填写本机ip,也可0.0.0.0
network.host: 0.0.0.0
#默认是随机字符串,可默认
#node.name: node-1
#可修改es访问端口,默认9200,可默认
#http.port: 9200
# ES数据和日志存放位置
#path.data: /home/elasticsearch/elasticsearch-7.3.2/data
#path.logs: /home/elasticsearch/elasticsearch-7.3.2/logs
# 快照路径
#path.repo: /home/elasticsearch/elasticsearch-7.3.2/snapshots
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
##优化参数
indices.memory.index_buffer_size: 20%
indices.query.bool.max_clause_count: 100000000
4、安装分词器HanLP v7.3.2
4.1. 下载分词器
[elasticsearch@test1 download]$ pwd
/home/elasticsearch/download
[elasticsearch@test1 download]$ wget https://github.com/KennFalcon/elasticsearch-analysis-hanlp/releases/download/v7.3.2/elasticsearch-analysis-hanlp-7.3.2.zip
4.2. 安装到ES
4.2.1 单机安装HanLP插件到ES(单点)
[elasticsearch@test1 elasticsearch-7.3.2]$ ./bin/elasticsearch-plugin install file:///home/esdata/elasticsearch-analysis-hanlp-7.3.2.zip
-> Downloading file:///home/elasticsearch/download/elasticsearch-analysis-hanlp-7.3.2.zip
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission <<ALL FILES>> read,write,delete
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.net.SocketPermission * connect,resolve
* java.util.PropertyPermission * read,write
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Continue with installation? [y/N]y
-> Installed analysis-hanlp
[elasticsearch@test1 elasticsearch-7.3.2]$
4.2.2 修改elasticsearch-7.3.2/config目录下的jvm.options文件,最后一行添加(相对路径不行改成绝对路径)
#容器里的相对路径
-Djava.security.policy=plugins/analysis-hanlp/plugin-security.policy
4.2.3 配置修改(如果不好用修改成绝对路径,默认是相对路径)
修改elasticsearch-7.3.2/config/analysis-hanlp目录下的hanlp.properties文件,
修改其中root的属性
#需要执行4.2.1 才能生成这个文件夹
vim elasticsearch-7.3.2/config/analysis-hanlp/hanlp.properties
# Root path of data #容器里的相对路径
root=plugins/analysis-hanlp/
5、eshead Content-Type header请求头错误
数据浏览看不到任何数据,且查看数据请求报错,错误情况如下:
{ error:“Content-Type header [application/x-www-form-urlencoded] is not supported”,status:406 }
解决方法:
vim headdata/vendor.js
修改共有两处:
1. 6886行 /contentType: "application/x-www-form-urlencoded
改成 contentType: "application/json;charset=UTF-8"
2. 7574行 var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
改成 var inspectData = s.contentType === "application/json;charset=UTF-8" &&
6、重启es并测试
curl -X GET "http://192.168.180.47:9200/_analyze" -H "Content-Type: application/json" -d '
{
"text": "我们大家的中华人民共和国",
"analyzer": "hanlp"
}'
# 使用分词器后的查询结果
{
"tokens": [
{
"token": "我们",
"start_offset": 0,
"end_offset": 2,
"type": "rr",
"position": 0
},
{
"token": "大家",
"start_offset": 2,
"end_offset": 4,
"type": "rr",
"position": 1
},
{
"token": "的",
"start_offset": 4,
"end_offset": 5,
"type": "ude1",
"position": 2
},
{
"token": "中华人民共和国",
"start_offset": 5,
"end_offset": 12,
"type": "ns",
"position": 3
}
]
}