一、Elasticsearch安装
安装 7+版本
docker pull elasticsearch:7.17.0
mkdir -p /data/elasticsearch/{config,data,plugins}
echo "http.host: 0.0.0.0" > /data/elasticsearch/config/elasticsearch.yml
#不给权限启动会报错
chmod -R 775 /data/elasticsearch/
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.17.0
解压 elasticsearch-analysis-ik-7.17.0.zip 到/data/elasticsearch/plugins/ik
docker镜像下载
docker pull elasticsearch:5.6.8
docker run -di --name=elasticsearch --restart=always -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8
9200端口(Web管理平台端口) 9300(服务默认端口)
浏览器输入地址访问
开启远程连接
上面完成安装后,es并不能正常使用,elasticsearch从5版本以后默认不开启远程连接
,程序直接连接会报如下错误:
failed to load elasticsearch nodes : org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{5ttLpMhkRjKLkvoY7ltUWg}{192.168.211.132}{192.168.211.132:9300}]
我们需要修改es配置开启远程连接
,代码如下:
登录容器
docker exec -it elasticsearch /bin/bash
查看目录结构 输入: dir
进入config目录
修改elasticsearch.yml文件
vi elasticsearch.yml
如果显示bash: vi: command not found,安装编辑器
apt-get update
apt-get install vim
修改如下图
同时添加下面一行代码
cluster.name: my-application
重启docker
docker restart elasticsearch
系统参数配置
重启后发现重启启动失败了,这时什么原因呢?这与我们刚才修改的配置有关,因为elasticsearch在启动的时候会进行一些检查,比如最多打开的文件的个数以及虚拟内存区域数量等等,如果你放开了此配置,意味着需要打开更多的文件以及虚拟内存,所以我们还需要系统调优
修改vi /etc/security/limits.conf
,追加内容 (nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制 )
* soft nofile 65536
* hard nofile 65536
修改vi /etc/sysctl.conf
,追加内容 (限制一个进程可以拥有的VMA(虚拟内存区域)的数量 )
vm.max_map_count=655360
执行下面命令 修改内核参数马上生效
sysctl -p
重新启动虚拟机,再次启动容器,发现已经可以启动并远程访问
reboot
跨域配置
修改elasticsearch/config下的配置文件:elasticsearch.yml,增加以下三句命令,并重启:
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 192.168.211.132
其中:
http.cors.enabled: true: 此步为允许elasticsearch跨域访问,默认是false。
http.cors.allow-origin: “”:表示跨域访问允许的域名地址(*表示任意)。
重启
docker restart elasticsearch
二、IK分词器安装
IK分词器下载地址https://github.com/medcl/elasticsearch-analysis-ik/releases 下载的版本与elasticsearch对应!
将ik分词器上传到服务器上,然后解压,并改名字为ik
unzip elasticsearch-analysis-ik-5.6.8.zip
mv elasticsearch ik
将ik目录拷贝到docker容器的plugins目录下
docker cp ./ik elasticsearch:/usr/share/elasticsearch/plugins
重启docker
docker restart elasticsearch
IK分词器测试
访问:http://114.116.xx.xx:9200/_analyze?analyzer=ik_smart&pretty=true&text=
我是程序员
访问:http://114.116.xx.xx:9200/_analyze?analyzer=ik_smart&pretty=true&text=
我是程序员