ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。接下来将记录一下如何在Linux服务器上安装Elasticsearch。
ps aux|grep elasticsearch
安装JDK具体操作,请点击链接
https://www.oracle.com/index.html
地址:https://www.oracle.com/java/technologies/javase-jdk15-downloads.html
https://java.com/en/download/linux_manual.jsp
下载版本: jre-8u271-linux-x64.tar.gz
下载地址:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/
vi /etc/profile
在末尾添加如下代码:
需要设置权限
chmod -R 777 /mnt/humx/tools/java/jdk8u275-b01
#java
export JAVA_HOME=/mnt/humx/tools/java/jdk8u275-b01
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
退出编辑器,使用如下命令使环境变量生效
source /etc/profile
测试是否安装成功
java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)
[root@iZwz9flnbsu8mylcqnd3l4Z java]# vim /etc/profile
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
或者从官网中下载相应的压缩包,使用ftp上传至服务器进行压缩安装:\
下载地址:https://www.elastic.co/downloads/elasticsearch\
这里选择6.0版本的Elasticsearch,选择对应的安装包进行下载
解压到当前目录
tar -zxvf elasticsearch-6.0.0.tar.gz
安装,将Elasticsearch移动到/usr/local/elasticsearch目录之中
mv elasticsearch-6.0.0 /usr/local/elasticsearch
进入/usr/local/elasticsearch/config目录,使用vi编辑器
vi elasticsearch.yml
取消如下注释,并修改为当前主机地址:
network.host: 192.168.0.156
discovery.zen.ping.unicast.hosts: ["192.168.0.156"]
使用vi编辑器,修改/etc/sysctl.conf文件,添加如下代码(若无将会出现下面常见问题2):
vm.max_map_count=262144
退出保存后执行如下命令:
sysctl -p
使用vi编辑器,修改/etc/security/limits.conf文件,在文件末尾添加如下代码(若无将会出现下面常见问题3):
python为登录服务器的用户名
python soft nofile 65536
python hard nofile 65536
python soft nproc 4096
python hard nproc 4096
或者
* soft memlock unlimited
* hard memlock unlimited
值得注意的是,python为登录的用户名。修改退出保存之后,切记需要退出重新登录,配置才能生效!!!
进入/usr/local/elasticsearch目录之中,输入以下命令,开始Elasticsearch服务:
前台启动 ./bin/elasticsearch
后台启动 ./bin/elasticsearch -d
测试一下:
curl -XGET 'http://0.0.0.0:9200/'
出现以下代码,就表示安装完成了:
{
"name": "bWU0DBI",
"cluster_name": "elasticsearch",
"cluster_uuid": "-sm1xR7iQsG-SczdgfROSw",
"version": {
"number": "6.0.0",
"build_hash": "8f0685b",
"build_date": "2017-11-10T18:41:22.859Z",
"build_snapshot": false,
"lucene_version": "7.0.1",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}
问题1:org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
解决:es不允许以root用户运行,需要单独创建用户;Elasticsearch版本> = 5.0.0时,是不可用超级管理员运行Elasticsearch的,退出管理员账号即可
groupadd es
useradd es -g es
chown -R es:es elasticsearch-6.5.4
然后切换至es用户,启动
su es
./bin/elasticsearch
问题2: max virutal memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方案,请看上面修改配置文件第2项
问题3: max number of threads [3750] for user [xxx] is too low, increase to at least [4096]
在网上找到的答案都是修改/etc/security/limits.d/90-nproc.conf文件,可是我发现我系统中根本不存在此文件!!!后又请教高人朋友,说是可以修改/etc/security/limits.conf文件,修改发现之后也根本不管用,原来修改该文件之后需要退出重新登录一下才管用。具体修改配置,请看修改配置文件第3项
问题4:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=‘Cannot allocate memory’ (errno=12)
解决:config/jvm.optipons配置文件,默认jvm内存时1g,而当前机器不够1g,可以修改小一点,个人学习用可以修改成 128m
-Xms128m
-Xmx128m
问题5:
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
解决:config/jvm.optipons配置文件添加 -XX:-AssumeMP
问题6:远程访问 (rds需要设置白名单 9200端口通顺)
可以修改 Elastic 安装目录的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,设成0.0.0.0让任何人都可以访问。线上服务不要这样设置,要设成具体的 IP然后重新启动 Elastic。
network.host: 0.0.0.0
浏览器访问 xxxxx:9200
问题7 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
先要切换到root用户
然后可以执行以下命令,设置 vm.max_map_count ,但是重启后又会恢复为原值。
sysctl -w vm.max_map_count=262144
持久性的做法是在 /etc/sysctl.conf 文件中修改 vm.max_map_count 参数:
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p