聊一聊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的索引数据搜索过程》

相关推荐
TM1Club7 小时前
AI驱动的预测:新的竞争优势
大数据·人工智能·经验分享·金融·数据分析·自动化
zhang133830890757 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
电商API_180079052478 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
龙山云仓9 小时前
No140:AI世间故事-对话康德——先验哲学与AI理性:范畴、道德律与自主性
大数据·人工智能·深度学习·机器学习·全文检索·lucene
躺柒10 小时前
读数字时代的网络风险管理:策略、计划与执行04风险指引体系
大数据·网络·信息安全·数字化·网络管理·网络风险管理
独自归家的兔11 小时前
从 “局部凑活“ 到 “全局最优“:AI 规划能力的技术突破与产业落地实践
大数据·人工智能
海域云-罗鹏11 小时前
国内公司与英国总部数据中心/ERP系统互连,SD-WAN专线实操指南
大数据·数据库·人工智能
策知道12 小时前
依托政府工作报告准备省考【经验贴】
大数据·数据库·人工智能·搜索引擎·政务
Henry-SAP13 小时前
SAP(ERP) 组织结构业务视角解析
大数据·人工智能·sap·erp·sap pp
TracyCoder12314 小时前
ElasticSearch内存管理与操作系统(一):内存分配底层原理
大数据·elasticsearch·搜索引擎