在阅读这篇文章之前,你应该是对ElasticSearch有一定了解的,或者可以先通过文章末尾的链接了解ES是什么
环境搭建
- Ubuntu 14.04.5 LTS
- Elasticsearch 2.4.4
- jdk1.7.0_76
安装
我们先从Elastic的官网下载ES的安装包
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.4/elasticsearch-2.4.4.tar.gz
解压ES
我们选择/usr/local作为工作路径
tar -xzvf elasticsearch-2.4.4.tar.gz -C /usr/local
cd /usr/local/elasticsearch-2.4.4
更改ES配置
cd conf
vi elasticsearch.yml
我们主要更改ES的绑定ip和性能调优。
这里我们绑定了三个ip,并禁用掉删除全部索引的功能,同时针对ES的内存和缓存进行优化
bootstrap.memory_lock: true
index.cache.field.max_size: 50000
index.cache.field.expire: 30m
index.cache.field.type: soft
network.host: 101.37.*.25,10.29.*.58,127.0.0.1
action.disable_delete_all_indices : true
安装启动ES
到这里你就可以直接启动ES了。
cd ../bin
//直接启动ElasticSearch
./elasticsearch
//或者使用后台方式进行启动
./elasticsearch -d
默认情况下ES会占用9200和9300端口,我们通过netstat检查ES的启动情况
netstat -anp|grep 9200
可以看到我们绑定的三个ip都已经开始了网络监听
root@101.37.*.25:/usr/local/elasticsearch-2.4.4/bin# netstat -anp|grep 9200
tcp 0 0 10.29.*.58:9200 0.0.0.0:* LISTEN 11135/java
tcp 0 0 101.37.*.25:9200 0.0.0.0:* LISTEN 11135/java
tcp 0 0 127.0.0.1:9200 0.0.0.0:* LISTEN 11135/java
遇到的问题
我们使用root角色进行启动ES时可能会报如下错误:
root@101.37.*.25:/usr/local/elasticsearch-2.4.4/bin# ./elasticsearch
Exception in thread "main" Java.lang.RuntimeException: don't run elasticsearch as root.
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
这是由于默认情况下ES是不建议使用root账号启动ES的,可以通过指定变量的方式进行启动。
方法一:
在启动时指定变量。
./elasticsearch -Des.insecure.allow.root=true
方法二:
在elasticsearch可执行文件中指定变量。
vi elasticsearch
// 找到ES_JAVA_OPTS在其后追加
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
重启即可。
PS:一般在使用ES时会为其申请指定的heap空间,我们可以在系统变量中指定ES_HEAP_SIZE="8g"
为ES申请空间,也可以在elasticsearch文件中指定。