前言
之前在本地搭建了Elasticsearch的环境,然后实现了简单的检索功能,之后应该把服务架设在服务器上,全网都能访问,否则每次访问的时候都只能使用ssh的端口转发,所以今天想着在服务器上搭建一个Elasticsearch的环境。
前期准备需要有java的环境,我的服务器正好有java8的环境所以不需要重新安装,需要注意的就是最新的Elasticsearch7.x需要java11 的环境,所以我选择了Elasticsearch6.8.8的版本,与我电脑上的一致,可能可以避免很多的问题。
安装Elasticsearch
(1)下载Elasticsearch
官网下载Elasticsearch特别慢,所以找了一个有人上传到百度云的链接进行下载。
然后解压,使用FTP上传到了服务器上。
(2)创建ES用户
默认ES 6.X 是不允许root用户运行的,否则ES运行的时候会报错,所以我们需要创建新的用户
(3)修改ES目录权限
更改elasticsearch-6.8.8目录及文件所属用户为es
(4)启动但出错了
进入bin目录。-d为后台启动
./elasticsearch -d
修改配置文件:
cluster.name: li-application #集群名称,可以自行修改
node.name: linux-2 #节点名称,自行修改
network.host: 0.0.0.0 #主机地址,这里写本机IP
http.port: 9200 #端口
su root 进入root权限,修改
vim /etc/security/limits.conf
在文件未添加以下内容(开头es 为用户名)
es soft nofile 65536
es hard nofile 131072
es soft nproc 4096
es hard nproc 4096
sysctl -w vm.max_map_count=262144
vim /etc/sysctl.conf #让配置永久生效
在/etc/sysctl.conf添加:
vm.max_map_count=262144
Centos6不支持SecComp,而ES6默认bootstrap.system_call_filter为true
vim config/elasticsearch.yml
禁用:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
取消bootstrap.memory_lock的注释,添加bootstrap.system_call_filter 配置
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
再次启动es,成功启动
安装Logstash
安装Logstash是在官网安装的,速度很慢,下载完之后,传到了服务器上,然后与mac环境下同样的修改。
在运行Logstash的时候,发现阿里云的学生机直接宕机了,宕机了。。。。。。
然后突然发现,根本没法在服务器上做抽取,性能太差了。
重启了很多次Logstash都跑不起来
所以又想了个办法,用本地的Logstash给服务器的ES抽取数据,修改article.conf ,将es的地址写成服务器的地址。这样的话成了,成功为服务器的es抽取到了数据
查看索引
http://39.105.44.114:9200/_cat/indices?v
在springboot中使用远程的es
修改springboot的配置文件后,本以为能一次成功,结果错误又来了
什么鬼啊
跟着网上的教程,各种改配置文件,都不行,我真的是哭了。先放弃把
总结
最近开发发现,版本割裂问题真的是一个很严重的问题,es的版本Logstash的版本,甚至是springboot的版本都对项目的影响非常大,轻的是,改完版本之后,会有几个方法是被废弃掉的,你可以查到最新的使用方法修改即可。最恶心的就是,旧版本有的,新版本删除掉了,不再提供相应方法。
更恶心的是,更换版本之后,会发现代码一点错都没有,但是就是启动不起来,排查的时候,由于对这些工具的包了解很浅,没有仔细研究过源码,只能一点点排查。
真的是坑,会浪费大量的时间,可能到最后还没结果,吐了。