docker安装elasticsearch8.5.0和kibana
2023-12-13 21:39:04
服务器环境,centos7
一、安装elasticsearch
1. 创建一个es和kibana通用的网络
docker network create es-net
2. 拉取es镜像,这里选择8.5.0版本
docker pull elasticsearch:8.5.0
3. 创建挂载目录,并授权
mkdir /usr/local/install/elasticsearch/data
chmod 777 /usr/local/install/elasticsearch/data/
mkdir /usr/local/install/elasticsearch/plugins
chmod 777 /usr/local/install/elasticsearch/plugins/
4. 通过docker运行es
docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /usr/local/install/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/install/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.5.0
5. es正常启动后,通过 docker ps 命令即可看到对应的容器正常启动运行。
注意,此时es默认是需要通过https? 用户名密码登录访问的。所以必须通过https://IP:9200 访问。
6. 使用http访问,需要进入容器修改 elasticsearch.yml配置文件,
把其中?xpack.security.enabled: false? ?改为false即可。默认为true。
# 使用root用户进去才能改
docker exec -it --user root es /bin/bash
cd config
vi elasticsearch.yml
7.? 重启es (docker restart es),? 浏览器直接访问 http://IP:9200,? ?结果如下即可。?
问题:
一、?第6点中需要进入容器修改配置文件,容器中没有vim命令,需要安装。
? ? ? ?有两点需要注意:
? ? ? ?1. 需要用root用户进入容器,不然会提示没有权限!
docker exec -it --user root es /bin/bash
? ? ? ?提示没有权限如下图:
? ? ? ? ? ? ? ?
? ?2.? 安装vim命令
apt-get update
apt-get install vim
二、安装kibana
1.? 拉取kibana镜像??
docker pull kibana:8.5.0
2. 通过docker运行kibana
docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.5.0
3. 访问kibana,? ?http://IP:5601, 成功如下
4. 测试es ,? 进入Dev tools
三、安装分词器
1.? ES自带的标准分词器(standard)对中文分词不太友好。
GET /_analyze
{
"analyzer" : "standard",
"text" : "分词器分词效果测试"
}
2、安装IK分词器
# 进入es容器
docker exec -it es /bin/bash
# 安装对应8.5.0版本的分词器
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.5.0/elasticsearch-analysis-ik-8.5.0.zip
# 重启es容器使其生效
exit;
docker restart es
3.测试IK分词器的两种模式??ik_max_word
和ik_smart
GET /_analyze
{
"analyzer" : "ik_max_word",
"text" : "分词器分词效果测试"
}
GET /_analyze
{
"analyzer" : "ik_smart",
"text" : "分词器分词效果测试"
}
ik_max_word 和 ik_smart 的区别
ik_max_word: 会将文本做最细粒度的拆分,会穷尽各种可能的组合,适合 Term Query。好处是搜索到的概率可能较高,缺点是分的词多了,占用内存空间会更多;
ik_smart: 会做最粗粒度的拆分,适合 Phrase 查询。好处是分的词少了,将来查询更多的数据效率会更高一点,缺点是搜索到的概率可能较低。
所以,在这两种方式的选择上,需要在内存占用、查询效率、搜索到的概率等方面进行考虑。
文章来源:https://blog.csdn.net/winy_lm/article/details/134857616
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!