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

相关推荐
阿里云大数据AI技术3 小时前
一体系数据平台的进化:基于阿里云 EMR Serverless Spark的持续演进
大数据·spark·serverless
TDengine (老段)4 小时前
TDengine 开发指南—— UDF函数
java·大数据·数据库·物联网·数据分析·tdengine·涛思数据
Stanford_11064 小时前
关于大数据的基础知识(二)——国内大数据产业链分布结构
大数据·开发语言·物联网·微信小程序·微信公众平台·twitter·微信开放平台
异常君5 小时前
Java 应用中构建 Elasticsearch 多层次缓存:提升查询效率的实战方案
java·elasticsearch·架构
G皮T6 小时前
【Elasticsearch】一个图书馆的案例解释 Elasticsearch
大数据·elasticsearch·搜索引擎·全文检索·kibana·索引·index
cdsmjt7 小时前
当文化遇见科技:探秘国际数字影像创新生态高地
大数据
T06205148 小时前
【实证分析】上市公司企业风险承担水平数据集(2000-2022年)
大数据·人工智能
G皮T8 小时前
【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计
大数据·elasticsearch·搜索引擎·nested·join·多表关联·flattened
G皮T8 小时前
【Elasticsearch】映射:Nested 类型
大数据·elasticsearch·搜索引擎·映射·nested·嵌套类型·mappings