问题:
在工作中,我们有很多需要全文搜索的内容,一般我们都会将数据导入到elasticsearch中
解决办法:
1. 配置jdk环境
我安装的是Java SE Development Kit 8u201:
选择了:jdk-8u201-linux-x64.tar.gz
2. 安装及配置环境变量
解压压缩文件:
tar xvf jdk-8u201-linux-x64.tar.gz
将解压后的文件移动到相应的路径,我这里移动到/usr/lib
下:
sudo mv jdk1.8.0_201 /usr/lib/jdk
上面的命令会自动创建jdk目录,其实是重命名了jdk1.8.0_201
在文件/etc/profile末尾增加如下内容:
export JAVA_HOME=/usr/lib/jdkexport JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin
之后执行:
source /etc/profile
使配置生效
3. 下载elasticsearch
说在前面:
我在下载时,最新版本是6.6.2,我下载的也是此版本
下载地址:
这里我选择了tar.gz的压缩包,当然也可以选择deb的安装包
4. 解压及安装
解压文件:
tar xvf elasticsearch-6.6.2.tar.gz
移动解压后的目录到/opt下:
sudo mv elasticsearch-6.6.2 /opt/elasticsearch
移动到opt下,并且目录重命名为elasticsearch
在文件/etc/profile中配置路径:
export PATH=$PATH:/opt/elasticsearch/bin
执行:
source /etc/profile
现在就算安装完了,可以通过命令行执行:
elasticsearch
看看是否可以正常运行
5. 运行时的问题
max number of threads [3803] for user [xx] is too low, increase to at least [4096]max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
三个问题:
一个是说当前用户可用最大线程数太少, 一个是最大虚拟内存范围大小,我们来增加到最少的需求值 一个是最大文件描述符个数
(1) 先解决线程数量问题
查看线程数:
ulimit -u
发现果然是3803,所以需要去修改
打开配置文件/etc/security/limits.conf
,末尾添加如下内容:
xx soft nproc 4096xx hard nproc 4096
这里注意,xx是我运行elasticsearch时使用的用户,
我只是给这个用户的线程数增加了,不影响其它用户的限制
重启电脑后,再次查看:
ulimit -u
这时发现线程数已经提升到了4096,而且运行elasticsearch,
已经看不到关于线程的那个提示了(2) 再解决虚拟内存问题
查看虚拟内存设置:
sudo sysctl -a | grep 'vm.max_map_count'
发现,果然是65530,我们来修改一下:
sudo sysctl -w vm.max_map_count=262144
执行命令后,再次查看已经变成了262144了,但是这样重启会失效
我们来修改对应的配置文件/etc/sysctl.conf
,增加如下内容: vm.max_map_count=262144
这样重启也可以了
(3) 最大文件描述符个数
查看命令:
ulimit -n
打开配置文件/etc/security/limits.conf
,末尾增加如下内容:
xx soft nofile 65536xx hard nofile 65536
写入配置文件,重启生效,现在我们如果不重启的话,可以继续使用命令:
ulimit -Sn 65536
这样这次不用重启就已经修改了
经过以上的折腾,就可以了
再次运行elasticsearch就发现,没有这些警告了