Elasticsearch Mapping 的字段类型 简介

使用elasticsearch 就像使用数据库一样,在使用之前,总归是要声明 index 的每个type具体的字段。

一般我们不建议动态修改字段,会在线上带来各种各样的问题,而是建议在开发前就规划好字段,选择合适的字段尽可能提高 索引和检索 效率


Elasticsearch Mapping 的字段类型 简介


以下是基于 elasticsearch 6.3.2 版本,官方支持的字段类型:


核心类型 (core datatypes):

string (字符串)

  • 分为 keyword (不可分词) 和 text ( 可分词)

Numeric datatypes (数字类型)

  • long, integer, short, byte, double, float, half_float, scaled_float

Date datatype (日期类型)

  • date

Boolean datatype (布尔类型)

  • boolean

Binary datatype (二进制类型)

  • binary

Range datatypes (范围类型)

  • integer_range, float_range, long_range, double_range, date_range


Elasticsearch Mapping 的字段类型 简介


Complex Datatypes (复杂类型)

  • Object datatype ( object 用来表示 单个JSON对象)
  • Nested datatype ( nested 用来表示 JSON 数组)

Geo datatypes (地理信息类型)

Geo-point datatype (geo_point 用来表示 经纬度)

Geo-Shape datatype (geo_shape 用来表示复杂的如多边形)


Specialised datatypes (专用类型)

IP datatype

  • ip 表示ipv4 或者 ipv6 地址

Completion datatype

  • completion 提供自动补全建议

Token count datatype

  • token_count 计算字符串中的token个数

mapper-murmur3

  • murmur3 计算一个hash值

Percolator type

  • 从 query-dsl 中接收查询

join datatype

  • 表示父子关系

Arrays

数组类型:不需要单独定义


Multi-fields

一般是类似这个需求时使用: 一个 字符串字段,既想用来分词(text),又想当作 keyword 进行聚合


分享到:


相關文章: