docker 安装ElasticSearch、Kibana,并且汉化kibana,在elasticsearch容器中安装ik中文分词器
-------elasticsearch-----------
elasticsearch:搜索引擎,常用语海量查询;
kibana:它是elasticsearch的可视化界面
1.下载镜像文件
docker pull elasticsearch:7.6.2 //存储和检索数据 docker pull kibana:7.6.2 //可视化检索数据
2.创建elasticsearch的宿主机挂载目录,用于挂载redis的数据以及配置文件
mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data mkdir -p /mydata/elasticsearch/plugins echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
3.创建容器并启动
//--name为容器起名,-p暴露两个端口,9200以后发送http请求使用, //9300分布式集群状态下,节点之间的通信端口 //-e "discovery.type=single-node" 单节点运行 //-e ES_JAVA_OPTS="-Xms64m -Xmx128m" 指定es初始占用64m,最大占用128m docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.6.2
4.连接测试,端口号9200,如果有防火墙或者安全组记得放开端口号
-----发现不能连接,查看logs日志
docker logs elasticsearch //查看日志
AccessDeniedException,拒绝访问
原因:elasticsearch容器中的data文件挂载至宿主机外边,由于用户权限的原因导致访问禁止,授予文件夹权限即可
rwx:root用户可读可写可执行,但其他用户只有读和执行的权限,故我们应该讲文件夹的权限均变为rwx
使用:chmod -R 777 /mydata/elasticsearch/ //将所有人权限均变为rwx
重新启动docker容器,在连接测试,正常
5.安装ik中文分词器插件
首先下载ik分词器,可以根据自己需要的版本:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2
进入到elasticsearch容器plugins文件夹挂载的宿主机目录,我的是,/mydata/elasticsearch/plugins
将ik分词器上传到文件夹下进行解压
因为下载的是zip压缩包,通过unzip 压缩包,解压就可以了,然后删除压缩包,重新启动elasticsearch,测试即可
--------------------------end---------------------------------
-------------------kibana-------------------
1.安装kibana,创建容器并启动
// -e ELASTICSEARCH_HOSTS=http://ip:9200 映射的elasticsearch的访问url docker run --name kibana -e ELASTICSEARCH_HOSTS=http://ip:9200 -p 5601:5601 -d kibana:7.6.2
2.访问测试, 成功!
3.汉化kibana
①进入运行的kibana容器中
docker exec -it kibana bash
②修改kibana配置文件
vi config/kibana.yml // 在配置文件最后一行加上 i18n_locale: "zh-CN" //注意中间有空格
③退出容器,重启kibana,成功!
------------end---------------
方式二:
编辑kibana.yml配置文件
kibana.yml配置文件放在宿主机/mydata/kibana/config目录下,内容如下:
elasticsearch.hosts 地址是es的地址
# Default Kibana configuration for docker target server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://1ocalhost:9200" ] xpack.monitoring.ui.container.elasticsearch.enabled: true
运行 Kibana
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kibana -e "I18N_LOCALE=zh-CN" -e "ELASTICSEARCH_HOSTS=http://localhost:9200" -p 5601:5601 -v /mydata/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.6.2
-d
不打印日志启动 去掉 -d 会打印日志-e
汉化启动 && 指定es访问ip-p
指定端口号-v
挂在文件启动
kibana脚本,操作es
# 创建索引 PUT goods_index # 查询索引 GET goods_index # 删除索引 DELETE goods_index # 添加映射 PUT goods_index/_mapping { "properties":{ "age":{ "type":"integer" }, "name":{ "type":"keyword" }, "desc":{ "type":"text" } } } # 创建索引并且添加映射 PUT goods_index1 { "mappings": { "properties": { "age":{ "type":"integer" }, "name":{ "type":"keyword" }, "desc":{ "type":"text" } } } } # 添加文档,指定id PUT goods_index/_doc/1 { "name":"张三", "age":34, "desc":"北京人深圳来" } # 添加文档,不指定id POST goods_index/_doc { "name":"李四", "age":25, "desc":"四川妹子真辣" } # 修改文档 PUT goods_index/_doc/1 { "name":"张三1111", "age":34, "desc":"北京人深圳来" } # 删除文档 DELETE goods_index/_doc/1 # 查询文档 指定id GET goods_index/_doc/OuR3y3wB4XY5Ck55qC97 # 查询所有文档 GET goods_index/_doc/_search
# ik分词器,ik_smart粗粒度 GET _analyze { "analyzer": "ik_smart", "text": "我爱你亲爱的菇凉" } # ik分词器,ik_max_word细粒度 GET _analyze { "analyzer": "ik_max_word", "text": "我爱你亲爱的菇凉" } # 查询文档,默认使用的是standard分词器,应当在创建映射时,指定分词器 GET goods_index/_search { "query": { "term": { "desc": { "value": "北" } } } } # 创建索引并且添加映射 PUT goods_index1 { "mappings": { "properties": { "age":{ "type":"integer" }, "name":{ "type":"keyword" }, "address":{ "type":"text", "analyzer": "ik_max_word" } } } }