微信公众号:[中间件兴趣圈]
做者简介:《RocketMQ技术内幕》做者node
索引的配置项按是否能够更改分为static属性与动态配置,所谓的静态配置即索引建立后不能修改。mysql
分析模块相关配置参数,将在后续分析模块部分介绍。算法
索引分片分配相关参数。这部份内容将在Cluster(集群模块详细介绍)。sql
字段映射相关参数,详情请参考:Elasticsearch Mapping parameters(主要参数一览)数据库
后台分片合并进程相关配置参数。微信
类似性相关配置,这个后续可能会以专题介绍,暂不深究。多线程
慢查询日志相关配置。并发
首先ES提供在查询阶段(query)和数据获取阶段(fetch)设置阔值,超过该阔值则记录日志。
支持以下参数:app
1index.search.slowlog.threshold.query.warn: 10s 2index.search.slowlog.threshold.query.info: 5s 3index.search.slowlog.threshold.query.debug: 2s 4index.search.slowlog.threshold.query.trace: 500ms
上述参数定义查询阶段的阔值,分别表示,若是执行时间超过10s,打出警告日志,超过5s输出info级别日志。运维
1index.search.slowlog.threshold.fetch.warn: 1s 2index.search.slowlog.threshold.fetch.info: 800ms 3index.search.slowlog.threshold.fetch.debug: 500ms 4index.search.slowlog.threshold.fetch.trace: 200ms
上述参数定义查询获取数据(fetch)的阔值,分别表示,若是执行时间超过1s,打出警告日志,超过800ms输出info级别日志。
index.search.slowlog.level: info
定义日志输出级别为info,也就是hdebug,trace级别的日志不输出。
注意:上述日志级别为分片级日志。
上述参数定义了日志输出级别,那接下来还须要在log4j文件中定义日志输出器,日志输出文件路径等,其相关配置以下:
1appender.index_search_slowlog_rolling.type = RollingFile 2appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling 3appender.index_search_slowlog_rolling.fileName = ${sys:es.logs}_index_search_slowlog.log 4appender.index_search_slowlog_rolling.layout.type = PatternLayout 5appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.10000m%n 6appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs}_index_search_slowlog-%d{yyyy-MM-dd}.log 7appender.index_search_slowlog_rolling.policies.type = Policies // 文件切割方案,属于log4j的语法 8appender.index_search_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy // 基于时间切割,log4j还支持按大小切割,其类为SizeBasedTriggeringPolicy。 9appender.index_search_slowlog_rolling.policies.time.interval = 1 // 1小时切割成一个文件 10appender.index_search_slowlog_rolling.policies.time.modulate = true // 是否修正时间范围, 若是设置为true,则从0时开始计数 11 12logger.index_search_slowlog_rolling.name = index.search.slowlog 13logger.index_search_slowlog_rolling.level = trace 14logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling 15logger.index_search_slowlog_rolling.additivity = false
索引慢日志。
1index.indexing.slowlog.threshold.index.warn: 10s 2index.indexing.slowlog.threshold.index.info: 5s 3index.indexing.slowlog.threshold.index.debug: 2s 4index.indexing.slowlog.threshold.index.trace: 500ms 5index.indexing.slowlog.level: info 6index.indexing.slowlog.source: 1000
index.indexing.slowlog.source参数用来控制记录文档_souce字段字符的个数,默认为1000,表示只记录_souce字段的前1000个字符,能够设置true,表示输出_souce字段所有内容,设置为false,表示不记录_souce字段的内容。
默认状况下,会对_souce字段的输出进行格式化,一般使用一行输出,若是想阻止格式化,能够经过index.indexing.slowlog.reformat设置为false来避免。
一样经过上述属性定义好阔值,接下来将在logg4j配置文件中定义日志的输出。
1appender.index_indexing_slowlog_rolling.type = RollingFile 2appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling 3appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs}_index_indexing_slowlog.log 4appender.index_indexing_slowlog_rolling.layout.type = PatternLayout 5appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n 6appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs}_index_indexing_slowlog-%d{yyyy-MM-dd}.log 7appender.index_indexing_slowlog_rolling.policies.type = Policies 8appender.index_indexing_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy 9appender.index_indexing_slowlog_rolling.policies.time.interval = 1 10appender.index_indexing_slowlog_rolling.policies.time.modulate = true 11 12logger.index_indexing_slowlog.name = index.indexing.slowlog.index 13logger.index_indexing_slowlog.level = trace 14logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling 15logger.index_indexing_slowlog.additivity = false
存储模块,其主要参数为:index.store.type,表示存储类型,该参数为静态参数,在索引建立时指定,没法更改。
其可选值:
因为Lucene提交的开销太大,不能每一个单独变动就提交(刷写到磁盘),因此每一个分片复制都有一个事务日志,称为translog。全部索引(index)和删除(delete)操做都是在被内部Lucene索引处理以后(但在它们被确认以前[返回客户端])写入translog的。在发生崩溃的状况下,当分片恢复时,能够从translog中恢复最近已确认但还没有包含在上一次Lucene提交中的事务。
Translog日志有点相似于关系型数据库mysql的redo日志。
Translog相关配置参数(索引级别):
关于ES的配置属性就先介绍到这里,后续还会对Analysis、Index Shard Allocation、Similarities这三个模块进行更加详细的说明。
更多文章请关注微信公众号:
广告:做者的新书《RocketMQ技术内幕》已上市《RocketMQ技术内幕》已出版上市,目前可在主流购物平台(京东、天猫等)购买,本书从源码角度深度分析了RocketMQ NameServer、消息发送、消息存储、消息消费、消息过滤、主从同步HA、事务消息;在实战篇重点介绍了RocketMQ运维管理界面与当前支持的39个运维命令;并在附录部分罗列了RocketMQ几乎全部的配置参数。本书获得了RocketMQ创始人、阿里巴巴Messaging开源技术负责人、Linux OpenMessaging 主席的高度承认并做序推荐。目前是国内第一本成体系剖析RocketMQ的书籍。