文章目录

  • 一、ES文档字段类型
  • 1.1 Meta-Field (元字段)
  • 1.2 Field(字段)
  • 1.2.1 字符串类型
  • 1.2.2 数值类型
  • 1.2.3 布尔类型
  • 1.2.4 日期类型
  • 1.2.5 范围类型
  • 1.2.6 二进制类型
  • 1.2.7 对象类型
  • 1.2.8 数组类型


一、ES文档字段类型

1.1 Meta-Field (元字段)

元字段可以理解为每个文档都会有的字段。不是用户定义的。以下划线"_" 开头。
1、有些字段只是为了存储,如_source。它是原始JSON文档(也就是源数据的内容)他们会出现在文档检索的结果中, 却不能通过这个字段做检索。
2、有些字段是标识,如_id,_index等。
下面是关于元字段的介绍:

序号

名称

说明

1

_id

文档的唯一标识id

2

_index

文档所属索引

3

_type

文档所属类型

4

_uid

在索引内唯一,由映射类型和id组成,在6.0版本已废弃

5

_source

源JSON文档

6

_size

_source的字节数

7

_all

所有字段一起创建的索引,在6.0版本已废弃

8

_field_names

为文档非空字段名创建索引

9

_ignored

为忽略字段创建索引

10

_routing

文档到具体分片的路由

11

_meta

应用相关元信息

1.2 Field(字段)

字段也就是属性,它是自定义的,可以指定类型。默认情况下,每一个字段都是被索引的(使用倒排)

1.2.1 字符串类型

类型

描述

string

从ElasticSearch 5.x开始已废弃

text

用于全文索引,该类型的字段会被分词

keyword

不分词,只能通过精确值搜索,如果字段需要进行过滤、排序、聚合,设置keyword类型。

1.2.2 数值类型

类型

描述

整型

byte、short、integer、long 尽可能选择范围小的数据类型,占用空间小,索引效率高

浮点型

double、float、half_float、scaled_float

1.2.3 布尔类型

类型

描述

boolean

true、false

1.2.4 日期类型

类型

描述

date

日期类型表示格式可以是这种“2018-01-13” 或 “2018-01-13 12:10:30”

1.2.5 范围类型

类型

描述

integer_range

整数的范围

float_range

单精度的范围

long_range

长整形的范围

double_range

双精度的范围

date_range

日期的范围

ip_range

ip的范围

gt是大于,lt是小于,e是equals等于。
插入or更新文档|字段时,值写成json对象的形式:

"age_limit" : {
 "gte" : 20,
 "lte" : 40
}

1.2.6 二进制类型

二进制字段是指用base64来表示索引中存储的二进制数据,可用来存储二进制形式的数据,例如图片。默认情况下,该类型的字段只存储不索引

1.2.7 对象类型

对象类型是JSON格式
定义mapping

"user" : {
    "type":"object"
}
#插入|更新字段的值,值写成json对象的形式
"user" : {
    "name":"xiaoming",
    "age":18
}

1.2.8 数组类型

ES没有专门的数组类型,定义mapping,写成元素的类型

"array" : {
    "type":"integer"
}