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将根据操作环境选择最佳实现。可选的存储类型有:
- 6.0以后版本已被删除,默认为:default, 参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking_60_settings_changes.html#_store_settings

索引动态配置
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(熔断)机制,当查询或聚合的数据量超出单机处理的最大内存限制时会被截断,并抛出异常?
参考
- https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html
- https://www.cnblogs.com/suhaha/p/14207790.html
- https://www.cnblogs.com/cjsblog/p/10328367.html
- http://www.shixinke.com/elasticsearch/index-settings-parameters
- https://segmentfault.com/a/1190000023874134
R3_Elasticsearch Index Setting的更多相关文章
- Kooboo 加Search功能 必须先ReBuild Index Data
加Search功能 有几个要点 1. 需要在Kooboo 必须先 ReBuild Index Data 2. 需要在要搜索的page中启用搜索索引 搜索的代码 @using K ...
- Elasticsearch Index模块
1. Index Setting(索引设置) 每个索引都可以设置索引级别.可选值有: static :只能在索引创建的时候,或者在一个关闭的索引上设置 dynamic:可以动态设置 1.1. S ...
- 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 ...
- sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding
1 概述 这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析.当前分析的版本 sphinx-2.0.4 2 index 功能 3 文件表 4 索引文件结构 4. ...
- Django进阶篇【1】
注:本篇是Django进阶篇章,适合人群:有Django基础,关于Django基础篇,将在下一章节中补充! 首先我们一起了解下Django整个请求生命周期: Django 请求流程,生命周期: 路由部 ...
- (一)最小的Django
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 本文基本内容均出自<Lightweight Django>(中文为<轻量级D ...
- Scroll Segmented Control(Swift)
今天用了一个github上一个比较好用的Segmented Control但是发现不是我要效果,我需要支持scrollView.当栏目数量超过一屏幕,需要能够滑动. 由于联系作者没有回复,我就自己在其 ...
- [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)
"哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...
- elasticsearch 口水篇(6) Mapping 定义索引
前面我们感觉ES就想是一个nosql数据库,支持Free Schema. 接触过Lucene.solr的同学这时可能会思考一个问题——怎么定义document中的field?store.index.a ...
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
一.分词器 1. 认识分词器 1.1 Analyzer 分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...
随机推荐
- KingbaseES V8R3数据库运维案例之---不完整的启动包(incomplete startup packet)复现
案例说明: 在KingbaseES V8R3数据库的sys_log日志中,出现以下故障信息"不完整的启动包(incomplete startup packet)"日志信息.本案例复 ...
- 【已解决】Hadoop_02 bash: start-all.sh: 未找到命令...Linux
在配置hadoop时需要进到/etc/profile中修改hadoop路径 #配置Hadoop和Java环境 export JAVA_HOME=/JDK-1.8 #你自己Java的安装路径 expor ...
- CH392作服务器TCP Server应用配置使用
CH392工作在TCP Server模式时,参考手册说明需要打开监听Socket端口,也要设置数据连接Socket端口,注意数据连接Socket的源端口和监听Socket的源端口一致. 配置TCP S ...
- 中文GPTS,字节中文扣子Coze使用全教程
字节出自己的GPTS了,名字英文名叫coze,中文名叫"扣子".和OpenAI的GPTS类似.具有可定制性和完成特定任务的强大功能,它提供了一种新的GPT方式,可以让用户根据自己的 ...
- OpenHarmony Camera源码分析
一.简介 当前,开源在科技进步和产业发展中发挥着越来越重要的作用,OpenAtom OpenHarmony(简称"OpenHarmony")赋予了开发者孕育创新的种子,也为数字化产 ...
- HarmonyOS应用事件打点开发指导
简介 传统的日志系统里汇聚了整个设备上所有程序运行的过程流水日志,难以识别其中的关键信息.因此,应用开发者需要一种数据打点机制,用来评估如访问数.日活.用户操作习惯以及影响用户使用的关键因素等关键 ...
- 开发案例:使用canvas实现图表系列之折线图
一.功能结构 实现一个公共组件的时候,首先分析一下大概的实现结构以及开发思路,方便我们少走弯路,也可以使组件更加容易拓展,维护性更强.然后我会把功能逐个拆开来讲,这样大家才能学习到更详细的内容.下 ...
- Graph Embedding-DeepWalk
一言以蔽之,DeepWalk是在graph上,通过随机游走来产生一段定长的结点序列,并将其通过word2vec的方式获得各个结点的embedding的算法. DeepWalk一共涉及以下几个内容: 随 ...
- 前端vue+elementUI如何实现记住密码功能
我们这回使用纯前端保存密码 既然是记住密码,前端也就是使用cookie保存,访问时用cookie读取 先来了解下cookie的基本使用吧 Cookie 所有的cookie信息都在document.co ...
- python异步字符串查找,asyncio和marisa_trie
自然语言处理当中经常需要字符串的查找操作,比如通过查找返回字串在文本当中的位置,比如通过匹配实现的ner import pandas as pd import asyncio # data = pd. ...


