1.下载ealastic search
docker pull elasticsearch:7.6.2
2.外部文件夹挂载配置及授予文件夹权限
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/
3.启动Elastic search
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" //设置初始堆内存和最大内存 也可以调整虚拟机内存
4.设置开机启动elasticsearch
docker update elasticsearch --restart=always
5.测试
查看elasticsearch版本信息
http://192.168.56.10:9200/
http://192.168.56.10:9200/_cat/nodes
1.下载kibana
docker pull kibana:7.6.2
2.启动kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200 -p 5601:5601 -d kibana:7.6.2
3.设置开机启动kibana
docker update kibana --restart=always
4.测试,访问kibana
http://192.168.56.10:5601
1.在前面安装的elasticsearch时,我们已经将elasticsearch容器的“/usr/share/elasticsearch/plugins
”目录,映射到宿主机的“ /mydata/elasticsearch/plugins
”目录下,所以比较方便的做法就是下载“/elasticsearch-analysis-ik-7.6.2.zip”文件,然后解压到该文件夹下即可。安装完毕后,需要重启elasticsearch容器。
2.如果不嫌麻烦,还可以采用如下方式安装
1)查看elasticsearch版本号
2)进入es容器内部
docker exec -it elasticsearch /bin/bash
3)下载ik7.6.2
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
4)unzip 将压缩包解压到的文件 ik文件夹下
unzip elasticsearch-analysis-ik-7.6.2.zip -d ik
5)将解压好的ik文件夹移动到es的pulgins文件夹下
mv ik plugins/
6)将压缩包删除
rm -rf elasticsearch-analysis-ik-7.6.2.zip
GET my_index/_analyze
{
"text":"我是中国人"
}
执行结果:
{
"tokens" : [
{
"token" : "我",
"start_offset" : 0,
"end_offset" : 1,
"type" : "" ,
"position" : 0
},
{
"token" : "是",
"start_offset" : 1,
"end_offset" : 2,
"type" : "" ,
"position" : 1
},
{
"token" : "中",
"start_offset" : 2,
"end_offset" : 3,
"type" : "" ,
"position" : 2
},
{
"token" : "国",
"start_offset" : 3,
"end_offset" : 4,
"type" : "" ,
"position" : 3
},
{
"token" : "人",
"start_offset" : 4,
"end_offset" : 5,
"type" : "" ,
"position" : 4
}
]
}
使用ik_smart:
GET my_index/_analyze
{
"analyzer": "ik_smart",
"text":"我是中国人"
}
执行结果:
{
"tokens" : [
{
"token" : "我",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "是",
"start_offset" : 1,
"end_offset" : 2,
"type" : "CN_CHAR",
"position" : 1
},
{
"token" : "中国人",
"start_offset" : 2,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 2
}
]
}
3.配置ik分词器自定义词库
1)首先在docker中安装nginx;参考博文:docker中安装nginx
在运行下面实例之前,需要安装nginx(安装方法见安装nginx),然后在nginx目录下的html目录下创建es文件夹并创建“fenci.txt”文件;http://192.168.56.10/es/fenci.txt
nginx上资源的访问路径
2)修改/usr/share/elasticsearch/plugins/ik/config
中的IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
将其修改为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://192.168.56.10/es/fenci.txt
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
http://192.168.56.10/es/fenci.txt
这个是nginx上资源的访问路径
3)退出保存并重启elasticsearch否则不生效
1.下载elasticsearch head
docker pull mobz/elasticsearch-head:5
2.运行elasticsearch head
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
3.在浏览器中打开elasticsearch-head页面,填入ElasticSearch地址
4.在这里可能会出现跨域拒绝访问问题,连接不上elasticsearch
在elasticsearch.yml中添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
docker restart elasticsearch