索引的配置项按是否可以更改分为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(熔断)机制,当查询或聚合的数据量超出单机处理的最大内存限制时会被截断,并抛出异常?

参考


R3_Elasticsearch Index Setting的更多相关文章

  1. Kooboo 加Search功能 必须先ReBuild Index Data

      加Search功能   有几个要点 1. 需要在Kooboo 必须先 ReBuild Index Data 2. 需要在要搜索的page中启用搜索索引         搜索的代码 @using K ...

  2. Elasticsearch Index模块

    1.  Index Setting(索引设置) 每个索引都可以设置索引级别.可选值有: static  :只能在索引创建的时候,或者在一个关闭的索引上设置 dynamic:可以动态设置 1.1.  S ...

  3. Query the tables and index which will caus rebuild index fail

    On MSSQL server database, while rebuild index failed, we can use the follow sql statement to see if ...

  4. sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding

    1 概述 这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析.当前分析的版本 sphinx-2.0.4 2 index 功能 3 文件表 4 索引文件结构 4. ...

  5. Django进阶篇【1】

    注:本篇是Django进阶篇章,适合人群:有Django基础,关于Django基础篇,将在下一章节中补充! 首先我们一起了解下Django整个请求生命周期: Django 请求流程,生命周期: 路由部 ...

  6. (一)最小的Django

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 本文基本内容均出自<Lightweight Django>(中文为<轻量级D ...

  7. Scroll Segmented Control(Swift)

    今天用了一个github上一个比较好用的Segmented Control但是发现不是我要效果,我需要支持scrollView.当栏目数量超过一屏幕,需要能够滑动. 由于联系作者没有回复,我就自己在其 ...

  8. [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)

    "哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...

  9. elasticsearch 口水篇(6) Mapping 定义索引

    前面我们感觉ES就想是一个nosql数据库,支持Free Schema. 接触过Lucene.solr的同学这时可能会思考一个问题——怎么定义document中的field?store.index.a ...

  10. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...

随机推荐

  1. WC-Write Combining 合并写技术

    WC-Write Combining 合并写技术 为了提高写效率: CPU在写入L1时,同时用WC写入L2 实验代码: public class WriteCombining { private st ...

  2. KingbaseES 数据库使用Limit子句查询结果返回顺序不一致

    一.KingbaseES数据库limit查询子句: 在KingbaseES数据库使用LIMIT子句限制查询结果的行数,从而实现分段显示数据的功能. 使用LIMIT子句在KingbaseES数据库中进行 ...

  3. C# 金额的 动态分配算法

    /// <summary> /// 金额的 动态分配算法 /// </summary> public static void FindCosts() { // 定义费用明细列表 ...

  4. set集合的TreeSet类

    TreeSet 类 TreeSet类是Set接口的一个实现类,主要作用是用于对对象的排序以及确定存入对象的唯一性. 它的底层是红黑树,用来确保元素的排序和唯一性的,基于map对象,TreeSet是对T ...

  5. #分治,Dijkstra#洛谷 3350 [ZJOI2016]旅行者

    题目 给定一张\(n*m\)的网格图,\(q\)次询问两点之间距离 \(n*m\leq 2*10^4,q\leq 10^5\) 分析 首先floyd会TLE,考虑两点间距离可以由两段拼凑起来, 那么枚 ...

  6. 开启新时代,承接新使命,开放原子开源大赛OpenHarmony创新赛正式启航!

      开放原子开源大赛OpenHarmony创新赛,正式启动啦! "OpenHarmony创新赛"是开放原子全球开源大赛下开设的创新赛道,面向企业.个人.高校师生等广大开发者,聚焦O ...

  7. Response下载文件

    Response下载文件的主要步骤有七个: 1.要获取下载文件的路径 String realPath = "F:\\JavaWeb\\WorkSpace\\JavaWeb-Servlet\\ ...

  8. RabbitMQ 07 发布订阅模式

    发布订阅模式 发布订阅模式结构图: 比如信用卡还款日临近了,那么就会给手机.邮箱发送消息,提示需要去还款了,但是手机短信和邮件发送并不一定是同一个业务提供的,但是现在又希望能够都去执行,就可以用到发布 ...

  9. Qt5自带的日志功能,将日志输出到文件

    #include "QtWidgetsApplication1.h" #include <QtWidgets/QApplication> #include <Qt ...

  10. 通过 Traefik Hub 暴露家里的网络服务

    Traefik Hub 简介 ️Reference: 你的云原生网络平台 -- 发布和加固你的容器从未如此简单. Traefik Hub 为您在 Kubernetes 或其他容器平台上运行的服务提供一 ...