聊一聊Elasticsearch的索引(1)

本文主要对ES索引的映射、路由规则、别名、滚动索引进行整理和介绍。

1、映射

ES是通过索引映射来建立索引结构,索引映射相当于数据库的数据字典,定义了每个字段的名称以及所能保存的数据类型。

索引的映射创建后,后续还可以在映射上添加新字段,但是旧的字段无法删除和修改。

对于映射所能支持的常规数据类型,这里我就举两个例子:

  • 文本类型(text):支持分词的字段类型,默认情况下,ES会使用标准分词器将文本切分,并将切分后的文本保存到索引中。
  • 关键字类型(keyword):与文本类型不同,关键字类型的字段不需要进行分词处理,保存的是原始文本。当我们要做精确查询的时候字段必须是keyword类型。

忽略映射中不合法的数据,即写入数据如果不符合映射的定义,不会影响其他字段的写入,例如:一个字段的类型是时间类型,但是将"aaa"写入该字段,虽然该字段无法成功写入,但是也不会影响到其他字段的写入。

我们可以通过在映射中为某个字段定义copt_to参数,以实现将该字段复制到另外一个字段上,即「字段复制」。通过这种方式,我们可以实现一个查询条件对应多个字段查询的情况。如下图:

通过上图,我们可以看到title、author、abstract三个字段copt_to到了full_text。这样我们就可以实现只查询full_text字段就可以达到分别查询title、author、abstract三个字段的效果。

需要注意的是这里的full_text字段并不属于_source元数据,即它不是构建搜索的原始文本,例如上边的例子,构建索引的时候需要提供tilte、author、abstract者三个字段,而无需提供full_text。

默认情况下,只有_source元数据中的字段才会被保存到磁盘上,如果有需要将full_text字段也保存到磁盘上,我们可以通过在映射的时候将full_text字段的store属性设置为true,如下图:

ES支持动态映射,即写入索引的数据可以包含之前未定义的字段,ES会根据数据的内容自动匹配数据类型。匹配的规则除了默认之外,还支持自定义。

2、路由规则

ES通过路由规则来确定索引数据到底写入到哪个分片上。默认情况下,ES会使用下图这个公式来计算数据要写入的分片的编号:

3、别名

我们可以通过一个别名指向多个索引,这样搜索的时候使用别名就能同时搜索到多个索引的数据。

别名配合数据过滤,即可以给别名设置数据过滤条件,这样通过别名查询的时候就会自带查询条件,达到自动过滤数据的效果。

别名配合路由,即可以给别名设置路由,这样读写别名的时候就会自动携带路由信息。

4、滚动索引

当索引的数据量太大的时候,如果再往索引中写入数据会造成分片容量过大,会导致查询的时候内存不够引起整个集群的崩溃。这个时候我们可以考虑通过滚动索引 将数据写入到别的索引上,滚动索引需要与索引别名配合使用(可以理解是基于别名却创建一个滚动索引)。

假设有个名为log_idx_0的索引,它别名为log_idx_all。然后为别名log_idx_all指定一个滚动索引,如下图:

触发创建滚动索引需要符合一定的条件。

如果符合条件,则会创建一个新的索引,例如:log_idx_1,此时会将索引log_idx_0从别名log_idx_all中删除,并将别名log_idx_all指向log_idx_1。以后再通过别名log_idx_all写数据,数据会被写入到索引log_idx_1中。

如果不符合条件,则不会创建新的索引log_idx_1,数据依然会写入到索引log_idx_0中。

ES是不会自动的去检查当前索引是否符合触发滚动索引的条件了,我们只能采用手动的去轮询调用_rollover端点,并通返回结果来进行判断(索引是否符合触发滚动索引条件了、是否成功创建新的索引了)。

5、参考文献

  • 《Elasticsearch数据搜索与分析实战》------王深湛

上一篇:《聊一聊Elasticsearch的索引数据搜索过程》

相关推荐
段一凡-华北理工大学2 小时前
AI推动工业智能化转型~系列文章05:特征工程:工业 AI 的第一生产力
数据库·人工智能·分布式·搜索引擎·特征工程·高炉智能化
徐礼昭|商派软件市场负责人2 小时前
AI Agent 蜂群协作与经验基因化:从单体执行到自组织系统的工程路径
大数据·人工智能·算法·智能体·多agent
云草桑3 小时前
Odoo 出海供应链管理:库存管理与全球化运营实战
大数据·odoo·erp·跨境
Devin~Y3 小时前
从本地生活电商到 AI RAG:互联网大厂 Java 面试场景完整实战
java·spring boot·redis·elasticsearch·spring cloud·kafka·rag
海纳百川·纳海川3 小时前
租房行业数字化:换个思路解决“老问题”
大数据·微信小程序·小程序
zandy10113 小时前
2026年,AI Agent搜索Skill推荐已经离不开底层架构
大数据·人工智能·架构
Elasticsearch14 小时前
Elasticsearch:搜索教程 - 全文搜索(一)
elasticsearch
spider_xcxc16 小时前
Argo CD App of Apps 模式深度解析:像管理应用一样管理应用
大数据·数据库·elasticsearch
奥莱维17 小时前
酒店客房智能控制如何提升睡眠与入住体验
大数据·人工智能
greenbbLV18 小时前
中小公司积分商城选型:SaaS与私有化优劣对比分析
大数据·运维·人工智能