elasticsearch. 向导

安装

这里 下载最新的版本并解压, 转到刚解压的目录, 通过如下命令来启动 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_MEMES_MAX_MEM 表示设置JVM分配的最小和最大值(使用单位 M字节). 默认分别为 256m1g .

*NIX

启动shell脚本包含很多特性. 首先, 前面已经说过了, 能够很方便的控制elasticsearch服务究竟是以前台还是后台的方式来运行.

另外一个特性就是能够传递参数 -X-D 直接到脚本里面. 外面传递的参数会直接覆盖脚本里面的 JAVA_OPTSES_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_MEMES_MAX_MEM 用来设置JVM内存分配的参数 (单位 mega bytes). 默认分别是 2561024 .

 
Fork me on GitHub