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 :字符过滤器,对文本进行字符过滤处理,如 ...
随机推荐
- C# 委托(delegate)本质理解
代码如下,很简单 namespace Delegate { class Program { delegate void SayHi(); void SayHi_1() { Console.WriteL ...
- PLC:自动纠正数据集噪声,来洗洗数据集吧 | ICLR 2021 Spotlight
论文提出了更通用的特征相关噪声类别PMD,基于此类噪声构建了数据校准策略PLC来帮助模型更好地收敛,在生成数据集和真实数据集上的实验证明了其算法的有效性.论文提出的方案理论证明完备,应用起来十分简单 ...
- KingbaseES V8R6集群运维案例之---自动清理集群主库wal日志
案例说明: 在KingbaseES V8R6 主备流复制的集群,配置复制槽(replication slot).复制槽提供了一种自动化的方法来确保主控机在所有的后备机收到 WAL 段 之前不会移除 ...
- ArrayList,LinkedList,Vector三者的区别
List 中元素是有序的,元素可以重复,因为该集合体有索引 ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高. 当元素放满了后,默认以原长度的 50%+1 的长度加长集合 ...
- Python 简介和用途
什么是Python? Python是一种流行的编程语言,由Guido van Rossum创建,并于1991年发布. 它用于以下领域: 网页开发(服务器端) 软件开发 数学 系统脚本编写 Python ...
- 并发编程面试必备之ConcurrentHashMap源码解析
ConcurrentHashMap在我的面试生涯中,10次有8次是会被问到的,记得刚毕业那会,被问到ConcurrentHashMap源码的无助与苦涩,无奈只能网上找了一些教程,背一背,才算是蒙混过关 ...
- C#.Net WinForm学习笔记
.Net WinForm学习笔记 1,MDI窗体设有两个窗体frmMain,frmChild,则:frmMain: 设IsMdiContainer属性为true 打开子窗口: 在相关事件中写如下代 ...
- HarmonyOS NEXT调优工具Smart Perf Host高效使用指南
在软件开发的过程中,很多开发者都经常会遇到一些性能问题,比如应用启动慢.点击滑动卡顿.应用后台被杀等,想要解决这些问题势必需要收集大量系统数据.而在收集数据的过程中,开发者则需要在各种工具和命令之 ...
- CentOS 6.5 LAMP分主机平台的搭建及测试
CentOS 6.5 LAMP分主机平台的搭建及测试 看似非常之完备,转来抽空测试学习 原文地址:http://www.it165.net/os/html/201403/7595.html 前言 ...
- Cache Aside Pattern缓存+数据库读写模式的分析
1.Cache Aside Pattern(1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应 (2)更新的时候,先删除缓存,然后再更新数据库 2.为什么是删除 ...