Docker安装Elasticsearch

准备工作

安装Docker

Docker安装Elasticsearch

1.设置max_map_count不能启动es会启动不起来

不设置启动会提示:

max virtual memory areas vm.max_map_count [65530] is too low, increase
to at least [262144]

问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144;

  1. 查看max_map_count的值 默认是65530
cat /proc/sys/vm/max_map_count
  1. 重新设置max_map_count的值
sysctl -w vm.max_map_count=262144

2.下载镜像并运行

  1. 拉取镜像
#拉取镜像
docker pull elasticsearch:7.8.0
  1. 启动镜像
#启动镜像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.8.0

参数说明

--name表示镜像启动后的容器名称  

-d: 后台运行容器,并返回容器ID;

-e: 指定容器内的环境变量

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
	9200是后端发送请求restAPI使用的
	9300是es在分布式集群下节点间的通信端口

3.浏览器访问ip:9200 出现以下界面就是安装成功

Docker安装Elasticsearch_第1张图片

4.安装elasticsearch-head

elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。elasticsearch-head 插件的安装在 Linux 和 Windows 没什么区别,安装之前确保当前系统已经安装 nodejs 即可。

  1. 拉取镜像
docker pull mobz/elasticsearch-head:5
  1. 创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
  1. 启动容器
docker start elasticsearch-head
or
docker start 容器id #docker ps -a 可以查看容器id

5.浏览器访问: http://ip:9100 出现以下界面就是安装成功

Docker安装Elasticsearch_第2张图片
尝试连接easticsearch会发现无法连接上(如下图)
由于是前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置。

Docker安装Elasticsearch_第3张图片解决办法

6.修改docker中elasticsearch的elasticsearch.yml文件

  1. 进入elasticsearch容器
docker exec -it elasticsearch /bin/bash (进不去使用容器id进入)
  1. 编辑文件
vi config/elasticsearch.yml
  1. 在最下面添加2行
http.cors.enabled: true 
http.cors.allow-origin: "*"

Docker安装Elasticsearch_第4张图片

  1. 退出并重启服务
exit
docker restart 容器id

Docker安装Elasticsearch_第5张图片

7.ElasticSearch-head 操作时不修改配置,默认会报 406错误码

  1. 复制vendor.js到外部
docker cp 容器id:/usr/src/app/_site/vendor.js /usr/local/
  1. 修改vendor.js共有两处
1.6886行  
	contentType: "application/x-www-form-urlencoded"
	改成
	contentType: "application/json;charset=UTF-8"
2.7573行
	var inspectData = s.contentType === "application/x-www-form-urlencoded"
	改成
	var inspectData = s.contentType === "application/json;charset=UTF-8" &&
  1. 修改完成在复制回容器
docker cp /usr/local/vendor.js  容器id:/usr/src/app/_site
  1. 重启elasticsearch-head
docker restart 容器id
  1. 最好就可以查询到es数据了
    Docker安装Elasticsearch_第6张图片

8.安装ik分词器

前言:
es本身也自带分词器,但是大多仅对英文比较友好,对于中文一般来说都是一个字一个词,不能实现我们想要的多字词分词,例如”北京天安门“,分词之后是“北”,“京”,“天”,“安”,“门“,所以我们需要手动安装”ik分词器,这款分词器相对于来说对中文分词是比较有好的“,下面进入步骤

这里采用离线安装:
下载分词器压缩包
各版本下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

ik分词器版本要和elasticsearch版本保持一致例如我用的是7.8.0
elasticsearch-analysis-ik-7.8.0 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip

#1. 将压缩包移动到容器中
docker cp /tmp/elasticsearch-analysis-ik-7.8.0.zip 容器id:/usr/share/elasticsearch/plugins

#2. 进入容器
docker exec -it elasticsearch /bin/bash  

#3. 创建目录
mkdir /usr/share/elasticsearch/plugins/ik

#4. 将文件压缩包移动到ik中
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.8.0.zip /usr/share/elasticsearch/plugins/ik

#5. 进入目录
cd /usr/share/elasticsearch/plugins/ik

#6. 解压
unzip elasticsearch-analysis-ik-7.8.0.zip

#7. 删除压缩包
rm -rf elasticsearch-analysis-ik-7.8.0.zip

退出并重启

9.测试分词效果

http://ip地址:9200/_analyze

{
    "analyzer": "ik_max_word",
    "text": "北京天安门"
}

Docker安装Elasticsearch_第7张图片

你可能感兴趣的:(笔记,elasticsearch,docker)