1), docker 安装 elasticSearch 如下
docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8
2),通过如下命令 查看是否成功
docker ps
3),页面访问 elasticsearch 是否成功
4), 使用postMain 创建索引 如下
5), 把项目的elasticsearch 项目的访问地址 改为linux 虚拟机地址 运行项目,执行向索引库插入数据的方法 出现了错误
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{WW73fQYgSq-vd8jQXTmdIw}{192.168.11.134}{192.168.11.134:9300}]]
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:366)
at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)
...
- linux 虚拟机 9300 端口不可用 但是9200 可用
- window 电脑安装的elasticsearch 9200 与9300 端口都可用
- 这个错误 是因为 elasticsearch 从5版本以后默认不开启远程连接,需要修改配置文件(由于我们使用的是docker 安装的 elasticsearch 所以 我们怎么修改容器里面的配置文件呢?下面为你解答)
接下来来解决9300 端口不可用的这个问题
1), docker 获取 elasticsearch 路径名称
docker exec -it tensquare_es /bin/bash
运行如下
2),获取docker 容器中 elasticsearch 的 elasticsearch.yml 文件位置 ,如下
- 路径为 /usr/share/elasticsearch/config/elasticsearch.yml
2-1), 注意 如果我们直接使用 vi elasticsearch.yml来进行修改容器中的文件是不能进行修改的 如下
2-2),退出elasticsearch
3),接下来就是在虚拟机上创建这样一个文件 来 代替docker 容器中 elasticsearch.yml的配置文件
3-1),接下来使用ftp 查看我们复制的 elasticsearch.yml 文件如下复制成功
4),删除原来的 elasticsearch 容器 重新创建新容器
4-1),重新创建新的elasticsearch容器
docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8
如下
5),修改 /usr/share/elasticsearch.yml 的配置文件
命令
vi /usr/share/elasticsearch.yml
5-1),修改如下
保存退出命令是 esc :wq
6),重新启动 elasticsearch 容器如下
- 我们看 他跑起来了 其实没有跑起来 而是elasticsearch 在走日志 ,日志出错所以就显示关闭
- 这个问题主要是虚拟机的问题
6-1),这是什么原因呢?
- 这与我们刚才修改的配置有关,因为 elasticsearch 在启动的时候会进行一些检查,比如说最多打开的文件个数一级虚拟机内存区域数量等等,如果你开放了此设置,意味着需要打开更多的文件一级虚拟内存,所以我们还需要系统调优。
6-2),对linux 虚拟机进行系统调优
6-2-1),修改/etc/security/limits.conf ,追加内容
* soft nofile 65536
* hard nofile 65536
-
nofile 是单个进程允许打开的最大文件个数
-
soft nofile 是软限制 hard nofile 是硬限制
6-2-2),修改/etc/sysctl.conf,追加内容
vm.max_map_count=655360
- 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
6-2-3),重启虚拟机
#重启虚拟机
reboot
7),重新启动elasticsearch 容器
8),重新执行 9300端口测试 如下