ElasticSearch实战系列四: ElasticSearch理论知识介绍 (3)

示例图:

在这里插入图片描述

文档

存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。当比较Elasticsearch中的文档和MongoDB中的文档,你会发现两者都可以有不同的结构,但Elasticsearch的文档中,相同字段必须有相同类型。这意味着,所有包含 title 字段的文档, title 字段类型都必须一样,比如 string 。
文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段(multivalued)。每个字段有类型,如文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或者数组。字段类型在Elasticsearch中很重要,因为它给出了各种操作(如分析或排序)如何被执行的信息。幸好,这可以自动确定,然而,我们仍然建议使用映射。与关系型数据库不同,文档不需要有固定的结构,每个文档可以有不同的字段,此外,在程序开发期间,不必确定有哪些字段。当然,可以用模式强行规定文档结构。从客户端的角度看,文档是一个JSON对象。每个文档存储在一个索引中并有一个Elasticsearch自动生成的唯一标识符和文档类型。文档需要有对应文档类型的唯一标识符,这意味着在一个索引中,两个不同类型的文档可以有相同的唯一标识符。

文档类型:
在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存文章和评论。文档类型让我们轻易地区分单个索引中的不同对象。每个文档可以有不同的结构,但在实际部署中,将文件按类型区分对数据操作有很大帮助。当然,需要记住一个限制,不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫 title 的字段必须具有相同的类型。

核心数据类型
text 和 keyword

数值数据类型
long,integer,short,byte,double,float,half_float,scaled_float

日期数据类型
date

布尔数据类型
boolean

二进制数据类型
binary

范围数据类型
integer_range,float_range,long_range,double_range,date_range

复杂数据类型

对象数据类型
object 用于单个JSON对象

嵌套数据类型
nested 用于JSON对象数组

地理数据类型

地理位置数据类型
geo_point 纬度/经度积分

地理形状数据类型
geo_shape 用于多边形等复杂形状

专业数据类型

IP数据类型
ip 用于IPv4和IPv6地址

完成数据类型
completion 提供自动完成建议

令牌计数数据类型
token_count 计算字符串中令牌的数量
mapper-murmur3
murmur3 在索引时计算值的哈希并将其存储在索引中
mapper-annotated-text
annotated-text 索引包含特殊标记的文本(通常用于标识命名实体)

渗滤器类型
接受来自query-dsl的查询

join 数据类型
为同一索引内的文档定义父/子关系

别名数据类型
为现有字段定义别名。

多字段:
为不同的目的以不同的方式对同一字段建立索引通常很有用。例如,一个string字段可以映射为text用于全文搜索的字段,也可以映射为keyword用于排序或聚合的字段。或者,您可以使用standard分析仪, english分析仪和 french分析仪索引文本字段。
这是多领域的目的。大多数数据类型通过fields参数支持多字段。

映射:
在有关全文搜索基础知识部分,我们提到了分析的过程:为建索引和搜索准备输入文本。文档中的每个字段都必须根据不同类型做相应的分析。举例来说,对数值字段和从网页抓取的文本字段有不同的分析,比如前者的数字不应该按字母顺序排序,后者的第一步是忽略HTML标签,因为它们是无用的信息噪音。Elasticsearch在映射中存储有关字段的信息。

路由(routing):
当存储一个文档的时候,他会存储在一个唯一的主分片中,具体哪个分片是通过散列值的进行选择。默认情况下,这个值是由文档的id生成。如果文档有一个指定的父文档,从父文档ID中生成,该值可以在存储文档的时候进行修改。
这个属性在学习初期可以不必理会,使用默认即可。在有一定了解ElasticSearch之后可以在进行了解学习。

别名(alias):
它是一个或多个索引的一个附加名称,允许使用这个名称来查询索引。一个别名可以对应多个索引,反之亦然,一个索引可以是多个别名的一部分。别名只能用作查询,不能进行数据操作!

示例图:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssjgx.html