拉镜像
docker pull elasticsearch:8.4.1
docker pull kibana:8.4.1
创建一个es网络
docker network create elastic
3.启动
不要挂载目录,es8会自动生成yml文件,并且会配置用户名和密码,挂载以后就生成不出来,很尴尬
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 --net elastic \
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-it elasticsearch:8.4.1
4.日志打印出密码信息 (应该将这些信息保存下来,以后可能会用到)
访问9200 验证
请使用https, 不然无法访问,日志会报错。 输入用户名和密码
配置ssl证书
流程概述: es启动时会默认生成证书,用户名和密码,我们这一步就是拿到证书放到本地就可以正常https访问
!这里关键是因为后面Java客户端连接是需要配置证书,所以这一步是很有必要的!
docker exec -it elasticsearch /bin/bash
cd /usr/share/elasticsearch/config/certs
//确认有证书,退出容器,把证书复制到本地
exit
docker cp elasticsearch:/usr/share/elasticsearch/config/certs/http_ca.crt /home/docker/elastic/cert/http_ca.crt
//验证一下证书, 可以正常访问
curl --cacert http_ca.crt -u elastic https://localhost:9200
//建议吧证书拷一份到电脑里面,后面用代码本地启动时可以指向本地证书路径
可以看到有三个证书
启动kibana
docker run --name kibana --net elastic -p 5601:5601 -it kibana:8.4.1
访问kibana
将code参数一并带上,可以少一步输入验证码环节
es 生成的kibana key有效期30分钟,如果提示过期的话,重新生成新token
docker exec -it elasticsearch /bin/bash
./bin/elasticsearch-create-enrollment-token -s kibana --url "https://127.0.0.1:9200"
configure后输入用户名和密码 完活
关于https ,有博主说可以修改配置文件,设置为false, 但我觉得还是别动的好,因为它并不影响正常使用,万一后面kibana或者logstash 什么的,默认访问ssl, 岂不是很麻烦,多一事不如少一事。
集群搭建
安装拼音分词器
https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v8.4.1/elasticsearch-analysis-pinyin-8.4.1.zip
下载的压缩包 上传到 服务器的 plugins 目录 并创建一个 pinyin的目录
cd /home/docker/elastic/plugins
mk dir pinyin
unzip elasticsearch-analysis-pinyin-8.4.1.zip
删除zip包, 重启es
测试
github 官网的案例
PUT /medcl/
PUT /medcl/
{
"settings" : {
"analysis" : {
"analyzer" : {
"pinyin_analyzer" : {
"tokenizer" : "my_pinyin"
}
},
"tokenizer" : {
"my_pinyin" : {
"type" : "pinyin",
"keep_separate_first_letter" : false,
"keep_full_pinyin" : true,
"keep_original" : true,
"limit_first_letter_length" : 16,
"lowercase" : true,
"remove_duplicated_term" : true
}
}
}
}
}
GET medcl/_analyze
{
"text": ["你好"],
"analyzer": "pinyin_analyzer"
}