Elasticsearch自己就拥有良好的默认配置,因此须要配置的东西比较少。使用Cluster Update Settings API,能够修改正在运行中的集群的某些设置。html
配置文件应该包含特定节点的设置,好比node.name 和 paths,或者为了让节点可以加入某个集群作一些设置,好比 cluster.name 和 network.host 。java
Elasticsearch有两个配置文件:node
这些文件位于config目录中,默认位置是 $ES_HOME/config/ 。Debian和RPM软件包将config目录位置设置为 /etc/elasticsearch/ 。
config目录位置能够经过path.conf设置更改,以下所示:git
./bin/elasticsearch -Epath.conf=/path/to/my/config/
下面咱们来实际操做一下,如下是我使用的命令是:github
D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config
步骤以下:apache
一、把bin目录下的config目录拷贝到D盘下的ElasticSearch下(具体看你想放在什么地方)浏览器
二、为了查看咱们的操做是否生效,修改elasticsearch.yml中的集群名称app
三、在命令提示符中输入 D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config ,(若是输入以前elasticsearch已启动,建议关掉,不然可能不会成功)。elasticsearch
四、执行完成,到浏览器中输入 http://localhost:9200/ ,若是返回结果中包含 "cluster_name" : "my-application", 说明修改配置文件路径成功了。ide
配置格式为YAML。如下是更改数据和日志目录的示例:
path: data: /var/lib/elasticsearch logs: /var/log/elasticsearch
也能够像下面这样设置:
path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch
下面咱们来实际操做一下:(data和log文件夹不须要提早建立好):
一、配置elasticsearch.yml
二、为了查看是否生效,咱们用 D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch/config 从新启动一下Elasticsearch,而后经过kibana添加一条数据。
PUT /customer/external/1?pretty { "name": "John Doe" }
三、接着看看data和log文件夹下是否有内容。如下是个人log和data。
在配置文件中,能够经过 ${...} 符号引用环境变量,例如:
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
对于一些设置,可能不想存储在配置文件中,可使用 ${prompt.text} 或者 ${prompt.secret} ,此种方式不能再后台启动(好比使用服务运行或在后台运行),在启动elasticsearch的时候,会提示你输入。 ${prompt.secret} 不会把你输入的内容显示到终端上, ${prompt.text} 则能够。好比:
node:
name: ${prompt.text}
当启动elasticsearch的时候,终端就会提示输入配置值:
Enter value for [node.name]:
下面咱们来实际操做一下:
一、配置elasticsearch.yml
二、重启ES并键入my-node,
D:\ProgramFiles\elasticsearch-5.4.1\bin>elasticsearch -Epath.conf=/Elasticsearch /config Enter value for [node.name]: my-node
三、查看效果,节点名称已变为my-node。
{ "name": "my-node", "cluster_name": "my-application", "cluster_uuid": "D6llECslTvm-P1EXbADXxw", "version": { "number": "5.4.1", "build_hash": "2cfe0df", "build_date": "2017-05-29T16:05:51.443Z", "build_snapshot": false, "lucene_version": "6.5.1" }, "tagline": "You Know, for Search" }
Elasticsearch使用Log4j2进行日志记录。可使用 log4j2.properties 文件配置log4j2。Elasticsearch公开三个属性 ${sys:es.logs.base_path} ,${sys:es.logs.cluster_name} 以及 ${sys:es.logs.node_name} (若是明确设置node.name
),能够在配置文件中引用,以肯定日志文件的位置。
例如,若是您的日志目录(path.logs)是 /var/log/elasticsearch ,您的群集被命名 production;
那么 ${sys:es.logs.base_path} 将解析到 /var/log/elasticsearch ;
${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log 将被解析到 /var/log/elasticsearch/production.log 。
采用RollingFile类型的Appender
把日志写到/var/log/elasticsearch/production.log
归档后的日志文件的文件名格式,其中"%d{yyyy-MM-dd-HH}"用来自动填充日期
基于时间进行日志的切割
切割的间隔为1小时, 即每小时进行一第二天志的归档
修正时间范围, 从0时开始计数,日志轮换是以天做为分界(而不是相隔24小时)
若是在 appender.rolling.filePattern 中追加.gz
或者.zip
后缀,那么当日志轮换的时候,旧的日志将会被压缩处理。
若是要在特定时间段内保留日志文件,则可使用带有删除操做的滚动策略。
一、配置 DefaultRolloverStrategy
二、配置 delete action处理回滚
三、删除哪一个目录下的日志归档文件
四、回滚处理时适用的条件
五、保留日志七天
六、只删除超过7天的文件,若是它们与指定的glob匹配
七、从基路径删除和glob ${sys:es.logs.cluster_name}-* 匹配的文件,这是日志文件滚动到的glob;只会删除滚动的Elasticsearch日志,而不会删除弃用和缓慢的日志。感受有点不通,把原文贴出来。
Delete files from the base path matching the glob ${sys:es.logs.cluster_name}-*; this is the glob that log files are rolled to; this is needed to only delete the rolled Elasticsearch logs but not also delete the deprecation and slow logs
能够加载多个配置文件(在这种状况下,它们将会被合并),只要它们被命名 log4j2.properties 并存放在Elasticsearch config目录下(只要它的祖先是此目录就行); 这对于插件记录日志颇有用。
logger 部分包含java包及其对应的日志级别。 appender 部分包含日志的储存位置。在Log4j documentation中能够找到有关如何自定义日志记录和 appender 的相关信息。
除了常规日志记录功能以外,Elasticsearch还容许您启用对已弃用的日志记录。例如,若是未来须要迁移某些功能,则能够提早肯定。默认状况下,在WARN级别(在此级别,全部弃用日志消息都会被输出)启用弃用日志记录。
logger.deprecation.level = warn
这将在您的日志目录中建立每日滚动弃用日志文件。按期检查这个文件,特别是当你打算升级到一个新的主要版本。
默认日志记录配置已将弃用日志的滚动策略设置为1 GB后滚动和压缩,并保留最多五个日志文件(4个轮换日志,一个在用的日志)。经过在 config/log4j2.properties 文件中将弃用日志级别设置为error,就能够禁用它。
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html
参考文档:https://github.com/13428282016/elasticsearch-CN/wiki/es-setup--elasticsearch