从 这里 下载最新的版本并解压, 转到刚解压的目录, 通过如下命令来启动 elasticsearch:
$ bin/elasticsearch
在类*nix系统, 该命令会在后台运行. 如果想要强制使用前台运行的方式, 可在后面添加参数 -f:
$ bin/elasticsearch -f
ElasticSearch 使用java编写, 所以你需要安装 Java 6 环境来运行. 并且确保设置好环境变量 JAVA_HOME
.
环境变量
在启动脚本里面, ElasticSearch 自带内置的 JAVA_OPTS
参数传递给 JVM . 大部分重要的设置,如 -Xmx
控制进程的可分配最大内存数, 和 -Xms
进程的最低可分配内存 (一般来说,给进程分配的内存越多越好 :) ).
大多数情况下变量值 JAVA_OPTS
使用默认值就行了, 使用环境变量 ES_JAVA_OPTS
来设置或修改 JVM 的配置或者参数.
环境变量: ES_MIN_MEM
和 ES_MAX_MEM
表示设置JVM分配的最小和最大值(使用单位 M字节). 默认分别为 256m
和 1g
.
*NIX
启动shell脚本包含很多特性. 首先, 前面已经说过了, 能够很方便的控制elasticsearch服务究竟是以前台还是后台的方式来运行.
另外一个特性就是能够传递参数 -X
和 -D
直接到脚本里面. 外面传递的参数会直接覆盖脚本里面的 JAVA_OPTS
和 ES_JAVA_OPTS
的变量值. 例如:
$ bin/elasticsearch -f -Xmx2g -Xms2g -Des.index.storage.type=memory
重要配置项
文件描述
确保机器调大系统的 “最大打开文件数”(或者是运行elasticsearch服务的用户的最大文件打开数). 强烈建议设置成32k 甚至是 64k .
为了测试进程能够打开多少文件,可以通过传递参数 -Des.max-open-files
并设置值为 true
. 这样服务会在启动的时候打印输出进程能够打开的文件数目.
内存设置
这里有一个选项 mlockall 来尝试并锁定进程的地址空间,这样一来该地址空间的数据就不会被交换了(swapped). 设置方法, 将变量 bootstrap.mlockall
设置为 true
并且强烈建议内存分配的最大最小值设置成一样.
如果想要看看是否正常工作,可以设置 common.jna
日志为 DEBUG 级别. 当出现错误 “Unknown mlockall error 0” 的时候,其中一个解决方案就是设置 ulimit -l unlimited
.
注意, 这是一个实验性的特性, 当内存分配失败的时候或许会造成 JVM or shell脚本退出 (如果机器上内存不够的话).
以服务的方式来运行
ElasticSearch 可以通过目录下 bin/service
的脚本 elasticsearch
以服务的方式来运行. 脚本位于 这里. 脚本接受如下参数:
参数 | 描述 |
---|---|
console |
前台方式运行 elasticsearch. |
start |
后台方式运行 elasticsearch. |
stop |
停止正在运行的elasticsearch. |
install |
安装elasticsearch到系统启动项 (init.d / service). |
remove |
从系统启动项里面移除elasticsearch (init.d / service). |
服务使用的是Java Service Wrapper,一个精简的java虚拟机本地包装并且可以监视着虚拟机的各种状态.
注意, 传递给JVM级别的参数配置 (如 -X 参数) 应该在配置文件 elasticsearch.conf
里进行设置.
环境变量 ES_MIN_MEM
和 ES_MAX_MEM
用来设置JVM内存分配的参数 (单位 mega bytes). 默认分别是 256
和 1024
.