环境变量
最重要的参数是 -Xmx 来控制进程的最大内存 和 -Xms 控制最小内存。一般来说,分配的内存越大越好。
ES_HEAP_SIZE用来设置堆内存的大小,通常设置最小值为256m,最大值为1gb。
通常推荐将内存最小值和最大值设置为相同值,并将mlockall置为true。
系统配置
文件描述符
通常建议将进程的最大打开文件数设置为32k或者64k。将-Des.max-open-files置为true,将会在进程启动时输出能够打开的最大文件数;或者,通过命令检索max_file_descriptors :curl localhost:9200/_nodes/process?pretty。
内存设置
可以使用参数mlockall来锁定进程地址空间,以防止内存交换。所以,需要将bootstrap.mlockall置为true,并推荐将内存分配的最大值和最小值设为相同值(仅在Unix/Linux操作系统上才有效)。为了检测其是否有效,可以将common.jna记录到DEBUG级别。此外,可以通过设置ulimit -l unlimited 来解决“Unknown mlockall error 0"问题。
注意:如果没有足够的内存分配给机器,可能会导致JVM和shell 会话退出。
elasticsearch设置
elasticsearch的配置文件通常放在ES_HOME/config文件夹下,该文件夹下,有两个文件:elasticsearch.yml用来配置模块信息,而logging.yml用来配置日志信息。
配置文件的内部书写格式是YAML。
通常需要修改的参数如下:
路径
path:
logs: /var/log/elasticsearch
data: /var/data/elasticsearch
集群名(用于自动发现和探测)
cluster:
name: <NAME OF YOUR CLUSTER>
节点名
node:
name: <NAME OF YOUR NODE>
配置文件格式
配置文件的书写格式可以使用JSON或者其他格式。此外,使用es.default. 也可以设置默认值,如果该参数没有在配置文件中定义,就使用该默认值。${...}用来使用环境变量。
也可以通过外部命令来设置配置文件,例如 elasticsearch -f -Des.config=/path/to/config/file
索引设置
在集群中创建索引能够提供自己的设置。例如,如下命令创建了一个基于内存存储而不是默认的基于文件系统的存储。
curl -XPUT http://localhost:9200/kimchy -d \
'
index :
store :
type : memory
'
索引的设置能够进行灵活的设置。这就意味着,在具体的每个节点上创建的索引,都将会默认使用上述配置,即将索引存储在内存中,除非该索引明确的设置了该项。换句话说,任何索引级配置都将覆盖节点级配置。
日志
elasticsearch使用log4j来进行内部的日志抽象。它试图利用YAML来进行配置以便简化log4j的配置,相应的配置文件是config/logging.yml。