首页 > 编程笔记 > 通用技能 阅读:4

Elasticsearch数据类型大全(新手必看)

与编程语言中变量的数据类型类似,文档中的字段也有与之关联的特定数据类型。Elasticsearch 提供了丰富的数据类型,包括简单类型、复杂类型和专用类型。这个类型的列表还在不断增加,应加以关注。

Elasticsearch 提供了 20 多种不同的数据类型,我们可以根据具体需求选择适当的数据类型。数据类型可以大致分为以下几类:

注意,Elasticsearch 的官方文档中提供了所有可用的类型。

根据具体的业务需求和数据特点,文档中的每个字段可以关联一个或多个数据类型。下表中列出了一些常用的数据类型及示例。

表:常见数据类型及示例
类型 描述 示例
text 表示文本信息(如字符串);非结构化文本 电影名、博客文章、书评、日志
integer、long、short、byte 表示一个数值 感染病例数、取消的航班数、售出的产品数、图书排名
float、double 表示一个浮点数 学生的平均绩点、销售额的移动平均值、评审者的平均评分、温度
boolean 表示一个二元选择:真或假 这部电影是一部热门影片吗?这名学生通过考试了吗?
keyword 表示结构化文本:不能被拆分或分析的文本 错误码、电子邮件地址、电话号码、社会保险号
object 表示一个 JSON 对象 (JSON 格式的)员工详细信息、推文、电影对象
nested 表示一个对象数组 员工地址、电子邮件的路由数据、电影的技术人员

可以想象,这不是数据类型的完整列表。Elasticsearch 8.6 版本中定义了将近 40 种数据类型。为了优化搜索查询,Elasticsearch 在某些情况下会非常精细地定义类型。例如,文本类型被进一步细分为更具体的类型,如 search_as_you_type、match_only_text、completion、token_count 等。

Elasticsearch 还尝试将数据类型按“家族”进行归类,以优化空间和性能。例如,关键词家族包括 keyword、wildcard 和 constant_keyword 数据类型。这只是当前的“家族”归类,期待未来会有更多。

在 Java 和 C# 等编程语言中,我们无法为一个变量定义两种不同的类型。然而,在 Elasticsearch 中没有这样的限制。当涉及用多种数据类型表示一个字段时,Elasticsearch 非常灵活,允许我们按照自己想要的方式设计模式。

例如,我们可能希望一套教程的作者既是 text 类型又是 keyword 类型。每个字段都有特定的特征,keyword 不会被分析,这意味着字段会按原样存储。我们还可以有更多的类型,例如,除了 text 和 keyword 两种类型,author 字段还可以被声明为 completion 类型。

相关文章