Elasticsearch-索引(Index)

Elasticsearch索引介绍,包括索引设置、索引模板、索引生命周期管理、翻滚索引。
基于7.11版本。

索引设置(Index Settings)

static

只能在创建索引时或关闭的索引上设置

  • index.number_of_shards:主分片数量,默认1
  • index.number_of_routing_shards:拆分索引的路由分片数量,默认值位于2~1024之间,依赖索引主分片数量
  • index.shard.check_on_startup:打开前检查分片是否损坏,默认false
  • index.codec:压缩存储算法,默认LZ4
  • index.routing_partition_size:自定义路由可以到达的分片数量,默认1

dynamic

可以使用API实时对索引进行操作

  • index.number_of_replicas:主分片的副本数,默认1
  • index.auto_expand_replicas:根据集群中数据节点的数量自动扩展副本的数量,默认false
  • index.search.idle.after:搜索空闲之前不能接收搜索和获取请求的时间,默认30s
  • index.refresh_interval:刷新操作频率,最近对索引的更改既可见,默认1s。-1关闭刷新操作
  • index.max_result_window:查询索引结果的最大数量,默认10000
  • index.max_inner_result_window:内部或聚合命中最大数量,默认100
  • index.max_rescore_window:打分请求的最大索引数量,默认10000(同index.max_result_window)
  • index.max_docvalue_fields_search:查询中允许的最大字段数,默认100
  • index.max_script_fields:查询中允许的最大脚本字段数,默认32
  • index.query.default_field:查询返回的默认字段,默认*(表示所有)

索引模板(Index Templates)

索引模板是告诉Elasticsearch在创建索引时如何配置索引的一种方法。对于数据流(data stream),索引模板配置是创建他们的后备索引。在创建索引之前先配置模板,模板设置将用作创建索引的基础。

模板有两种类型,索引模板(index templates)和组件模板(component templates)。

组件模板是可重用的构建块,用于配置映射(mappings)、设置(settings)和别名(alias)。使用组件模板来构造索引模板,但它们不会直接应用于索引。索引模板可以包含组件模板的集合,也可以直接指定设置,映射和别名。如果匹配多个模板,优先使用优先级最高的模板。

可以使用模拟API创建索引,确定最终的索引设置。POST /_index_template/_simulate

注意事项:

  • 如果新数据流或索引与多个索引模板匹配,则使用优先级最高的索引模板。
  • Elasticsearch内置了许多索引模板(如:metrics--,logs--),每个模板的优先级是100。如果不想使用内置模板,请为您的模板分配更高的优先级。
  • 如果显式设置创建索引,并且该索引与索引模板匹配,则创建索引请求中的设置将优先于索引模板中指定的设置。
  • 索引模板仅在创建索引期间应用。索引模板的更改不会影响现有索引。
  • 当可组合模板匹配给定索引时,它始终优先于旧模板。如果没有可组合模板匹配,则旧版模板可能仍匹配并被应用。

索引生命周期管理(Index Lifecycle Manager - ILM)

配置索引生命周期管理策略,能够随着时间推移根据性能、弹性和保留要求自动的管理索引。

索引生命周期策略可以触发以下操作:

  • 翻转(Rollover):当现有索引达到一定分片大小,文档数或使用年限时,为翻转目标创建新索引。翻转目标可以是索引别名或数据流。
  • 收缩(Shrink):减少索引中主碎片的数量。
  • 强制合并(Force merge):手动触发合并以减少索引每个分片中的段数,并释放已删除文档所使用的空间。
  • 冻结(Freeze):将索引设为只读,并最大程度地减少其内存占用量。
  • 删除(Delete):永久删除索引,包括其所有数据和元数据。

使用ILM可以更轻松地管理热-温-冷体系结构中的索引,在使用时间序列数据时很常见(如日志和指标)。

索引生命周期(Index lifecycle)

ILM定义了以下四个阶段(Phases)

  • Hot:频繁的写入和查询
  • Warm:索引不在更新,仍然在查询
  • Cold:不再更新的索引,很少查询仍然可以搜索,查询较慢也没关系
  • Delete:不再需要的索引,可以安全的删除

索引的生命周期策略指定了应用于哪些阶段,每个阶段中执行什么操作,以及何时在两个阶段之间进行转换。

创建索引时可以手动应用生命周期策略。对于时间序列索引,需要将生命周期策略与用于在序列中创建新索引的索引模板相关联。当索引滚动时,不会自动将手动应用的策略应用于新索引。

阶段转换(phase transitions)

ILM根据其年龄在整个生命周期中移动索引。要控制这些翻转的时间,请为每个阶段设置一个最小年龄。为了使索引移至下一阶段,当前阶段中的所有操作都必须完成,并且索引必须早于下一阶段的最小年龄。

最小年龄默认为0,这会导致ILM在当前阶段中的所有操作完成后立即将索引移至下一阶段。

如果索引具有未分配的分片并且集群运行状况为黄色,则索引仍可以根据其索引生命周期管理策略过渡到下一阶段。但是,由于Elasticsearch只能在绿色集群上执行某些清理任务,因此可能会有意外的副作用。

阶段执行(phase execution)

ILM控制阶段中的动作的执行的顺序,以及哪些步骤是执行每个动作的必要索引操作。

当索引进入阶段后,ILM将阶段定义信息缓存在索引元数据中,这样可以确保索引政策更新不会将索引置于永远不退出阶段的状态。

ILM定期运行,检查索引是否符合策略标准,并执行所需的步骤。为了避免竞争情况,ILM可能需要运行多次执行,完成一项动作所需的所有步骤。这意味着即使indexs.lifecycle.poll_interval设置为10分钟并且索引满足翻转条件,也可能需要20分钟才能完成翻转。

阶段动作(phase actions)

参考https://www.elastic.co/guide/en/elasticsearch/reference/7.11/ilm-index-lifecycle.html#ilm-phase-actions

索引生命周期动作(Index Lifecycle Actions)

  • Allocate:将分片移动到具有不同性能特征的节点,并减少副本的数量。
  • Delete:永久删除索引。
  • Force merge:减少索引段的数量并清除已删除的文档。将索引设为只读。
  • Freeze:冻结索引以最大程度地减少其内存占用量。
  • Migrate:将索引分片移动到对应于当前 ILM 阶段的数据层。
  • Read only:阻止对索引的写操作。
  • Rollover:移动索引作为滚动别名的写索引,并开始索引到新索引。
  • Searchable snapshot:为配置库中的管理索引拍摄快照,并将其作为可搜索快照。
  • Set priority:降低索引在生命周期中的优先级,以确保首先恢复热索引。
  • Shrink:通过将索引缩小为新索引来减少主碎片的数量。
  • Unfollow:将关注者索引转换为常规索引。在Rollover、Shrink和Searchable snapshot操作之前自动执行。
  • Wait for snapshot:删除索引之前,请确保快照已存在。

ILM更新(Lifecycle policy updates)

您可以通过修改当前策略或切换到其他策略的方式来更改管理索引或滚动索引集合的生命周期。

为确保策略更新不会将索引置于无法退出当前阶段的状态,进入这个阶段时,阶段定义会缓存在索引元数据中。如果策略更新可以安全的应用,ILM更新缓冲的阶段定义;如果不能,则使用缓冲阶段定义完成该阶段。

Rollover(翻转)

在为日志或指标等时间序列数据编制索引时,不能无限期地写入单个索引。为了满足索引和搜索性能要求并管理资源使用,可以写入索引直到达到某个阈值,然后创建一个新索引并开始写入该索引。

使用滚动索引能够:

  • 优化活跃的索引,以在高性能热节点上获得高接收速率。
  • 针对热节点上的搜索性能进行优化。
  • 将较旧的,访问频率较低的数据转移到价格较低的冷节点上。
  • 根据您的保留政策,通过删除整个索引来删除数据。

我们建议使用数据流来管理时间序列数据。数据流自动跟踪写入索引,同时将配置保持在最低水平。数据流设计用于仅追加数据,其中数据流名称可用作操作(读取,写入,翻转,收缩等)目标。如果您的用例需要就地更新数据,则可以使用索引别名来管理时间序列数据。

自动翻转(automatic rollover):

ILM使您能够根据索引大小,文档数或使用年限自动翻转到新索引。触发翻转后,将创建一个新索引,将写入别名更新为指向新索引,并将所有后续更新写入新索引。
与基于时间的过渡相比,基于大小,文档数或使用年限翻转至新索引更可取。在任意时间滚动通常会导致许多小的索引,这可能会对性能和资源使用产生负面影响。

数据流(Data streams)

数据流用于跨多个索引存储仅追加的时间序列数据,同时提供一个用于请求的数据流名称。
可以将索引和搜索请求直接提交到数据流。流自动将请求路由到存储流数据的索引。同样可以使用索引生命周期管理(ILM)来自动管理这些后备索引。
数据流非常适合日志,事件,指标和其他连续生成的数据。

滚动索引(rollover index)

当现有的索引满足您提供的条件(a list of conditions)时,滚动索引API会为滚动目标(rollover target)创建一个新的索引。
当滚动目标是别名(alias)时,别名会指向新索引(当指向多个索引时,必须有一个索引设置is_write_index=true
当滚动目标是数据流(data stream)时,新索引会成为数据流的写索引,并生成一个增量

Rollover request

POST /<rollover-target>/_rollover/<target-index>
POST /<rollover-target>/_rollover/

Path parameters

  • <rollover-target>:必填,现有的分配给目标索引的索引别名或数据流名称。
  • <target-index>:可选,用于创建和分配索引别名的目标索引名称。如果<rollover-target>是数据流,则不允许使用此参数。如果<rollover-target>是索引别名,则分配给以"-"和数字结尾的索引名称,如logs-000001。

Request body

  • aliases:可选,索引别名
  • conditions:可选,滚动操作的触发条件
    • max_age:最大年龄
    • max_docs:最大文档数
    • max_size:最大索引大小
  • mappings:可选,映射配置
  • settings:可选,索引配置
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容