elasticsearch 配置的相关文件可以在 ES_HOME/config
目录下找到. 目录下默认有两个文件, 文件 elasticsearch.yml
用来配置 ElasticSearch 各个不同的 模块, 文件 logging.yml
用来配置 ElasticSearch 的日志相关.
配置
配置文件使用 YAML 格式. 这里有一个例子用来绑定ip:
network : host : 10.0.0.4
在生产环境中, 你肯定需要修改数据存储和日志文件的路径:
path: logs: /var/log/elasticsearch data: /var/data/elasticsearch
另外, 不要忘记给你的线上集群起一个名称, elasticsearch将使用它来自动发现和添加其它节点:
cluster: name: <NAME OF YOUR CLUSTER>
在ES内部, 所有配置都会合并折叠为“基于命名空间的(namespaced)"的配置. 例如, 上面的配置会合并为 network.host
. 这意味着elasticsearch可以灵活的支持其它格式的配置方式, 如, JSON. 如果你比较钟爱json, 只要简单的将配置文件 elasticsearch.yml
重命名为 elasticsearch.json
并且内容改成:
{ "network" : { "host" : "10.0.0.4" } }
同时这也意味着可以很方便的通过外部参数传递的方式来提供这些设置,如 参数 ES_JAVA_OPTS
同样也可作为 elasticsearch
命令的参数, 如:
$ elasticsearch -f -Des.network.host=10.0.0.4
另外一个选项是通过使用 ${...}
在配置文件中标记用来使用外部环境变量的设置,如:
{ "network" : { "host" : "${ES_NET_HOST}" } }
配置文件的路径可以通过在外部的系统属性来进行设置:
$ elasticsearch -f -Des.config=/path/to/config/file
索引相关配置
集群中创建的索引都可以分别作相应的设置. 如,下面是一个创建索引并使用基于内存作为存储而不是默认的文件系统的例子(格式可以是YAML或者JSON):
$ curl -XPUT http://localhost:9200/kimchy/ -d \ ' index : store: type: memory '
索引级别的设置同样也可以在节点级别上进行设置如,在配置文件 elasticsearch.yml
里, 可以这样设置:
index : store: type: memory
这样就意味着所有的在这个指定节点上创建的所有索引都将把索引存放在内存中,除非你显示的设置它的存储位置,也就是说,任何索引级别的设置都会覆盖节点级别的配置,当然,上面的设置也可以使用“折叠”的方式,如:
$ elasticsearch -f -Des.index.store.type=memory
有关索引级别的所有配置信息都可以在 索引模块 里找到.
日志
ElasticSearch 使用一个内部封装的日志抽象类, 包括 log4j. 它通过使用"YAML":http://www.yaml.org/ 来简化log4j的各种配置,可以通过配置文件 config/logging.yml
来进行修改.