乐闻世界logo
搜索文章和话题

Elasticsearch映射中的字段数据类型是什么?

1 个月前提问
1 个月前修改
浏览次数16

1个答案

1

在Elasticsearch中,映射(Mapping)定义了每个字段的数据类型以及如何索引和存储这些字段。数据类型是非常关键的部分,因为它会直接影响到字段的索引方式和搜索性能。Elasticsearch支持多种数据类型,主要可以分为以下几类:

  1. 核心数据类型(Core Datatypes)

    • 字符串类型: 如 text(用于全文搜索)和 keyword(用于精确值搜索,如过滤和聚合)。
    • 数值类型: 包括 integerlongshortbytedoublefloathalf_floatscaled_float 等。
    • 日期类型: date,可以存储日期和时间。
    • 布尔类型: boolean,表示真或假。
    • 二进制类型: binary,用于存储二进制数据。
  2. 复合数据类型(Complex Datatypes)

    • 对象类型: object,用于单个 JSON 对象。
    • 嵌套类型: nested,用于数组中的 JSON 对象,它可以被索引并搜索。
  3. 地理数据类型(Geo Datatypes)

    • 地理点类型: geo_point,用于存储经纬度坐标。
    • 地理形状类型: geo_shape,用于存储更复杂的形状如多边形等。
  4. 特殊用途数据类型(Specialised Datatypes)

    • IP 类型: ip,用于存储 IP 地址。
    • 自动识别类型: completion,用于自动完成功能。
    • 令牌计数类型: token_count,用于统计文本中令牌的数量。
    • 范围类型: 如 integer_rangefloat_range 等,用于存储数值的范围。

例子: 假设我们需要为一个电子商务网站建立一个索引,用于存储产品信息。产品信息包括产品名称、描述、价格和发布日期。在Elasticsearch中,我们可以这样设计映射:

json
{ "mappings": { "properties": { "product_name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "description": { "type": "text" }, "price": { "type": "double" }, "release_date": { "type": "date", "format": "strict_date_optional_time||epoch_millis" } } } }

这里,product_name 字段是一个 text 类型,用于全文搜索,并且额外定义了一个 keyword 类型的子字段,用于精确搜索。description 也是 text 类型,适合全文搜索。price 使用 double 类型存储产品价格。release_date 使用 date 类型,适合存储日期信息。

通过合理的数据类型选择,可以确保索引结构既能满足搜索需求,又能提供良好的性能。

2024年8月13日 13:42 回复

你的答案