ElasticSearch 实战:ES的数据类型 (text、keyword、date、object、geo等)

本文介绍了Elasticsearch支持的五种主要数据类型:Text用于全文本搜索,Keyword用于精确匹配,Date处理日期/时间,Object和Nested处理嵌套对象,以及GeoPoint和GeoShape用于地理位置。正确选择数据类型对索引性能和查询效果至关重要,需根据业务需求定制映射。
摘要由CSDN通过智能技术生成

Elasticsearch 支持多种数据类型以适应不同场景的需求。以下是一些常见的数据类型及其应用场景:

  1. Text

    • 用途: 用于全文本搜索和分析。
    • 特点: 文本类型的数据会经过分析器(Analyzer)处理,将其分解成词语(tokens),然后索引这些词语以便进行全文搜索。text 类型字段适合用于博客文章、产品描述等长文本内容的搜索。
    "description": {
      "type": "text",
      "analyzer": "standard" // 或者使用其他自定义分析器
    }
    
  2. Keyword

    • 用途: 用于精确值匹配、排序、聚合等操作。
    • 特点: 关键词类型的数据不会被分析,而是作为一个整体进行索引。这对于身份证号、电子邮件地址、标签、类别名等需要完整匹配的场景非常有用。
    "product_id": {
      "type": "keyword"
    }
    
  3. Date

    • 用途: 存储和搜索日期/时间值。
    • 特点: Elasticsearch 提供了丰富的日期格式支持,并且日期字段可以进行范围查询、排序和聚合。
    "created_at": {
      "type": "date",
      "format": "yyyy-MM-dd'T'HH:mm:ss.SSSZ" // 或其他日期格式
    }
    
  4. Object

    • 用途: 存储嵌套的对象结构,比如用户地址信息、关联的评论列表等。
    • 特点: 对象可以包含多个子字段,这些字段可以是任何其他类型,包括其他的对象类型。
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "text"
        },
        "city": {
          "type": "text"
        },
        "country": {
          "type": "keyword"
        }
      }
    }
    
  5. Nested

    • 用途: 用于存储可独立检索和聚合的嵌套对象数组。
    • 特点: 与对象类型相似,但提供更高级的功能,使得数组中的每个对象都能单独索引和查询。
    "orders": {
      "type": "nested",
      "properties": {
        "order_id": {
          "type": "keyword"
        },
        "items": {
          "type": "object",
          "properties": {
            "item_name": {
              "type": "text"
            },
            "quantity": {
              "type": "integer"
            }
          }
        }
      }
    }
    
  6. Geo Point

    • 用途: 存储地理坐标点,可用于地理位置相关的搜索、过滤和聚合。
    • 特点: 可以表示经纬度坐标,支持距离搜索、边界框搜索等。
    "location": {
      "type": "geo_point"
    }
    
  7. Geo Shape

    • 用途: 存储地理形状,如多边形、线段等,用于复杂的地理空间查询。
    • 特点: 支持多种几何形状,可以用来做更复杂的地理区域匹配。
  8. 数值类型(Numeric Types):

    • long, integer, short, byte, double, float, half_float, scaled_float 等,用于存储数值数据,适用于排序、范围查询和统计聚合。

实战中,选择正确的数据类型至关重要,因为这不仅影响数据的索引效率、存储大小,也直接影响到能否正确执行查询和聚合操作。在创建索引时,应该根据具体业务需求和数据特点来制定恰当的映射(mapping)。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值