代码改变世界

elastic search安装与本地测试

2018-04-09 10:22  ZealouSnesS  阅读(2839)  评论(0编辑  收藏  举报

elastic search安装与本地测试

elastic search是一个全文搜索引擎

教程:

综合:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html 强烈推荐

centos7上安装与配置:https://www.biaodianfu.com/centos-7-install-elasticsearch.html 不全

 

 

正确安装步骤:

root身份登陆服务器

安装java8并配置环境变量

执行一个命令,修改内核参数,让java能够锁定内存:https://www.cnblogs.com/rabbitpei/p/6738671.html

创建一个普通用户es

es身份重新登陆服务器

修改~/.bashrc文件,加入如下两行:

 

 

source ~/.bashrc让配置生效

下载elastic search,解压,进入文件夹,执行./bin/elasticsearch,看到如下就说明启动起来了,可以在本机测试一下:

 

 

 

 

我的安装历程(用的putty来远程登陆控制服务器):

root身份登陆服务器

安装java8并配置环境变量

下载elastic search,解压,进入文件夹。

 

执行./bin/elasticsearch,报错,检查后发现,java不能锁定内存:https://www.cnblogs.com/rabbitpei/p/6738671.html

解决办法:执行命令,让java可以锁定内存。

 

执行./bin/elasticsearch,报错,检查后发现,奇奇怪怪的错误,看教程后发现,新版的elastic search不支持root启动。

解决办法:创建一个普通用户es

 

su es,输入密码,继续./bin/elasticsearch,却发现因为此时在/root文件夹中,没有权限,于是sudo,又被提示not in the sudoers:https://jingyan.baidu.com/article/2a1383284bb3e8074a134f2d.html

解决办法:加入sudoers

 

继续sudo执行./bin/elasticsearch,奇奇怪怪的错误。

解决办法:于是,以es身份重新登录服务器,进到了es用户的文件夹,这下总算没有权限问题了。

 

下载elastic search,解压,进入文件夹。

执行./bin/elasticsearch,报错,这次报错倒是很简短,被kill。检查后发现,因为我的服务器只有1G内存,而我没有设置elastic search使用的内存大小,所以elastic search采用默认值1G,故启动elastic search时,elastic search进程试图向操作系统申请1G的内存空间,直接导致内存不足,触发了linux的OOM killer,OOM killer遂将刚启动的elastic search杀死。

关于elastic search的内存申请以及OOM killer:

什么是oom killer:https://www.vpsee.com/2013/10/how-to-configure-the-linux-oom-killer/

如何防止elastic search被oom killer杀死:https://stackoverflow.com/questions/25355726/prevent-elasticsearch-from-being-killed-by-oom-killer(注意,里面的ES_HEAP_SIZE的写法,在elastic search5.0中已经被ES_JAVA_OPTS代替!)

是不是给elastic search分的内存越大越好呢?不是!:https://www.v2ex.com/t/411036+++https://www.cnblogs.com/jiu0821/p/5650027.html (注意,里面的ES_HEAP_SIZE的写法,在elastic search5.0中已经被ES_JAVA_OPTS代替!)

解决办法:在环境变量/启动命令/elastic search配置文件里设置elastic search所占内存大小:修改~/.bashrc文件,加入如下两行:

第一行是JAVA_HOME环境变量,一定要配。

第二行就是elastic search所要申请的内存空间,200m的意思就是申请200MB的空间。如果想设的更大,例如4G,那么就这么写:export ES_JAVA_OPTS='-Xms4g -Xmx4g'。注意,不接受小数,例如这么写是错的:export ES_JAVA_OPTS='-Xms0.5g  -Xmx0.5g'(不应该写成0.5g而应该写成512m)。

 

 

修改完~/.bashrc后,保存退出,source ~/.bashrc让其生效。

 

再回到elastic search解压出的文件夹,执行./bin/elasticsearch

终于启动成功

 

 

然后新建一个putty session,以root身份登陆,在本机测试一下(为什么要在本机测试呢?因为elastic search默认只接受本机的请求,因为elastic search没有安全验证机制,所以如果要暴露端口到局域网乃至公网的话,是非常危险的,我们暂时就现在本机测试好了~,相关参考:http://bbs.360.cn/thread-14813424-1-1.html+++https://elasticsearch.cn/article/129

 

 

 

使用curl命令发送一个http请求到9200端口。

 

注意,有时,正在运行着elastic search的putty会因为超时而断开,此时如果重新登陆,需要查看一下占用9200端口/9300端口的进程,然后杀死那个进程,然后才能重新启动elastic search,否则端口被占用。

 

 

测试,成功!

 

sth.interesting:https://www.cnblogs.com/zlslch/p/6619089.html