zoukankan      html  css  js  c++  java
  • R3_Elasticsearch Index Setting

     索引的配置项按是否可以更改分为static属性与动态配置,所谓的静态配置即索引创建后不能修改。目录如下:生产环境中某索引结构(7.X后有变化)

    索引静态配置


     1、分片与压缩

    • index.number_of_shards:一个索引的主分片(primary shards)数。在ES层面可以通过 es.index.max_number_of_shards 属性设置索引最大的分片数,默认为1024;index.number_of_shards 的默认值为 Math.min(es.index.max_number_of_shards,5),故通常默认值为5。
    • index.codec: 数据存储的压缩算法,默认值为LZ4,可选择值 best_compression ,比LZ4可以获得更好的压缩比(即占据较小的磁盘空间,但存储性能比LZ4低)。     

     2、数据存储类型:index.store.type 

        不同的文件系统有不同的存储类型。默认情况下,Elasticsearch将根据操作环境选择最佳实现。可选的存储类型有:

    索引动态配置


    1.分片相关配置

    2.查询相关的设置

     3.刷新索引的设置

    4、translog设置

    • sync_interval :如果 index.translog.durability 设置为 async,用该值来设置刷盘的频率,默认为5s。
    • flush_threshold_size: es强制刷新的另外一个维度,如果translog的大小达到该值,则强制将未刷盘的数据强制刷新到Lucene中
    • flush_threshold_period: 在指定的时间间隔内如果没有进行flush操作,会进行一次强制flush操作。默认是30m。
    • retention.size: 保存跨日志文件的总大小。也就是一translog日志文件flush后,并不马上删除,而是保留一段时间,但最新的translog文件已存储的内容与待删除的文件的间隔不超过该参数设置的值,默认为512M。
    • retention.age: 保存translog文件的最大持续时间,默认为12 h

    5、查询慢日志设置

    • 首先ES提供在查询阶段(query)和数据获取阶段(fetch)设置阔值,超过该阔值则记录日志。 支持如下参数: 
    1、index.search.slowlog.threshold.query.warn: 10s
    2、index.search.slowlog.threshold.query.info: 5s
    3、index.search.slowlog.threshold.query.debug: 2s
    4、index.search.slowlog.threshold.query.trace: 500ms
    •  上述参数定义查询阶段的阔值,分别表示,如果执行时间超过10s,打出警告日志,超过5s输出info级别日志
    1、index.search.slowlog.threshold.fetch.warn: 1s
    2、index.search.slowlog.threshold.fetch.info: 800ms
    3、index.search.slowlog.threshold.fetch.debug: 500ms
    4、index.search.slowlog.threshold.fetch.trace: 200ms

    index.search.slowlog.level: info 
    •  上述参数定义查询获取数据(fetch)的阔值,分别表示,如果执行时间超过1s,打出警告日志,超过800ms输出info级别日志。
    • index.search.slowlog.level: info  定义日志输出级别为info,也就是 debug,trace 级别的日志不输出。注意:上述日志级别为分片级日志。
    • 级别(warn, info, debug, trace)可以控制哪些日志级别的日志将会被记录
    • 注意,日志记录是在分片级别范围内完成的,这意味着只有在特定的分片中执行搜索请求的慢日志才会被记录。
    • 日志文件配置默认在log4j2.properties

     Flag:生产环境的系统配置?查询与取数?

    6、Index Show Log

    1、index.indexing.slowlog.threshold.index.warn: 10s
    2、index.indexing.slowlog.threshold.index.info: 5s
    3、index.indexing.slowlog.threshold.index.debug: 2s
    4、index.indexing.slowlog.threshold.index.trace: 500ms
    
    5、index.indexing.slowlog.level: info
    6、index.indexing.slowlog.source: 1000 
    • index.indexing.slowlog.source:参数用来控制记录文档_souce字段字符的个数,默认为1000,表示只记录_souce字段的前1000个字符,可以设置true,表示输出_souce字段全部内容,设置为false,表示不记录_souce字段的内容
    • 默认情况下,会对_souce字段的输出进行格式化,通常使用一行输出,如果想阻止格式化,可以通过 index.indexing.slowlog.reformat 设置为false来避免
    • 索引慢日志文件名后缀为 _index_indexing_slowlog.log, 默认日志文件配置也是在log4j2.properties

    Flag:

     1、slow生产环境配置?查询与取数?级别?

     2、routing 是否可尝试来提高性能?

    •  Re: 对于数据量较大的业务查询场景,es侧一般会创建多个shard,并将shard分配到集群中的多个实例来分摊压力,
    • 正常情况下,一个查询会遍历查询所有的shard,然后将查询到的结果进行merge之后,再返回给查询端。此时,写入的时候设置routing,可以避免每次查询都遍历全量shard,而是查询的时候也指定对应的routingkey,这种情况下,es会只去查询对应的shard,可以大幅度降低合并数据和调度全量shard的开销。

     4、宽表的问题?在不支持Join的前提下的解决方案?

    • Re: 在索引中定义太多字段是一种可能导致映射爆炸的情况,这可能导致内存不足错误和难以恢复的情况,这个问题可能比预期更常见,index.mapping.total_fields.limit ,默认值是1000

     5、7.X JVM引入了新的circuit breaker(熔断)机制,当查询或聚合的数据量超出单机处理的最大内存限制时会被截断,并抛出异常?

    参考


  • 相关阅读:
    C++开源库,欢迎补充。
    LeetCode第二题
    LeetCode第五十八题
    tomcat连接数据库oracle问题,ClassNotFoundException异常
    jsp验证码,解决无法更新验证码问题
    [面试真题] LeetCode:Symmetric Tree
    [面试真题] LeetCode:Flatten Binary Tree to Linked List
    [面试真题] LeetCode:Longest Common Prefix
    [面试真题] LeetCode:Reverse Linked List II
    [面试真题] LeetCode:Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/tgzhu/p/14442104.html
Copyright © 2011-2022 走看看