Docker下安装ElasticSearch和Kibana

elasticsearch安装  

运行容器

#拉取镜像
docker pull elasticsearch:7.9.3

#创建数据目录
mkdir /data/elasticsearch/

#运行一下容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.9.3

#把data、plugins、config三个目录copy出来
docker cp <容器ID>:/usr/share/elasticsearch/data /data/elasticsearch
docker cp <容器ID>:/usr/share/elasticsearch/plugins /data/elasticsearch
docker cp <容器ID>:/usr/share/elasticsearch/config /data/elasticsearch

#遍历文件夹赋一下权限
chmod -R 777 /data/elasticsearch

#删掉容器
docker rm -f <容器ID>

#再次运行容器,挂载目录
docker run -d \
 --name elasticsearch \
 -p 9200:9200 \
 -p 9300:9300 \
 --env "node.name=elasticsearch" \
 --env "cluster.name=test-elasticsearch" \
 --env "bootstrap.memory_lock=true" \
 --env "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
 --env "discovery.type=single-node" \
 --env "script.painless.regex.enabled=true" \
 --volume /data/elasticsearch/data:/usr/share/elasticsearch/data \
 --volume /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 --volume /data/elasticsearch/config:/usr/share/elasticsearch/config \
 --volume /etc/localtime:/etc/localtime \
 elasticsearch:7.9.3

这样es就启动好了。我们可以去检查es是否安装完成,可以输入命令:

curl http://localhost:9200

或者在浏览器中打开http://localhost:9200这个网址,如果能看到以下信息则说明我们的es是已经安装好了的

{
  "name" : "elasticsearch",
  "cluster_name" : "test-elasticsearch",
  "cluster_uuid" : "_GdxokQOSCKcBd9lCkmiFw",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

修改配置,解决跨域访问问题

首先进入到容器中,然后进入到指定目录修改elasticsearch.yml文件

docker exec -it elasticsearch /bin/bash
cd /usr/share/elasticsearch/config/
vi elasticsearch.yml

在elasticsearch.yml的文件末尾加上:

http.cors.enabled: true
http.cors.allow-origin: "*"

修改配置后重启容器即可。

docker restart elasticsearch

或直接在挂载卷上修改 "/data/elasticsearch/config/elasticsearch.yml"

安装ik分词器

es自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下: 注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。可以在这查看所有版本,选择合适自己版本的右键复制链接地址即可。点击这里

cd /usr/share/elasticsearch/plugins/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip
exit
docker restart elasticsearch 

然后可以在kibana界面的dev tools中验证是否安装成功

POST test/_analyze
{
  "analyzer": "ik_max_word",
  "text": "你好我是东邪Jiafly"
}

不添加"analyzer": "ik_max_word",则是每个字分词,可以在下面kibana安装完成以后尝试一下

kibana安装

版本最好跟elasticsearch一致

docker pull kibana:7.9.3
docker run --name kibana --link=elasticsearch:test  -p 5601:5601 -d kibana:7.9.3

启动没那么快,等一会儿,启动以后可以打开浏览器输入http://localhost:5601就可以打开kibana的界面了

posted @ 2020-11-13 11:03  xtjatswc  阅读(91)  评论(0编辑  收藏  举报