版本:>= 7.0

1、基本类型

1-1、字符串类型

1-1-1、text 详情

1、支持分词、全文检索、模糊、精确… 等查询,不建议使用 text 聚合、排序

2、text 类型的最大支持长度无限制,适合大字段储存

3、es 默认分词为 standard 分词器对文本进行分词索引

可选参数

analyzer

分析器,它应该用于分析的字符串字段,无论是在索引时还是在搜索时(除非被search_analyzer覆盖)。默认索引分析器或标准分析器。

boost

增加权重,默认为 1.0,当搜索时指定 boost 权重,boost 越大结果越靠前

eager_global_ordinals

全局序号加载,经常用于聚合的字段,启用些功能一个不错的主意。es 不知道 哪些 fields 将 用于/不用于 term aggregation,因此 全局序数 在需要时才加载进内存,但,可以在mapping type上,定义 eager_global_ordinals==true,这样,refresh 时就会加载 全局序数

fielddata

字段可以使用内存中的 fielddata 进行排序、聚合或脚本编制吗? 接受真或假(默认)。如果要对分词的 field 执行聚合操作,必须将fielddata设置为true,默认 false,加载FieldData是开销很大的操作,一旦它被加载后,就会在整个段的生命周期中保留在内存中

fielddata_frequency_filter 详情

允许决定在启用 fielddata 时在内存中加载哪些值的专项设置。默认情况下,加载所有值。

fields 详情

多字段,允许为不同的目的以多种方式索引相同的字符串值,例如一个字段用于搜索,一个多字段用于排序和聚合,或者由不同的分析程序分析相同的字符串值。

index

字段是否可以被索引,默认 true

index_options

  • 四种不同级别的 index options 配置,可以控制倒排索引记录的内容
    • docs – 记录 doc id(只索引文档编号)
    • freqs – 记录 doc id 和 term frequencies (索引文档编号和词频率)
    • positions – 记录 doc id / term position(位置) / term frequencies(词频)
    • offsets – 记录 doc id / term frequencies / term position / character offsets(偏移量) (索引文档编号,词频率,词偏移量(开始和结束位置)和词位置(序号))
  • text 类型默认记录 positions,其它默认 docs
  • 记录内容越多,占用储存越大

index_prefixes

如果启用,2到5个字符之间的术语前缀将被索引到一个单独的字段中。
这使得前缀搜索能够以更大的索引为代价更有效地运行。

index_phrases

norms

在对查询进行评分时是否应该考虑字段长度。
接受真(默认)或假。

search_analyzer

在分析字段的搜索时使用的分析器。
默认为分析器设置。

search_quote_analyzer

当遇到短语时,应该在搜索时使用的分析器。
默认设置为search_analyzer。

similarity

应该使用哪种评分算法或相似度。
默认为BM25。

term_vector

是否应该存储分析字段的项向量。
默认为没有。

1-1-2、keyword

1、不进行分词,直接索引,支持模糊、精确、聚合、排序等

2、支持的最大长度为 32766 个 UTF-8 字符,可以通过 ignore_above 指定长度,超过部分无法被索引(类型 MySQL 的前缀索引)

支持参数
参数名称 默认值 详情连接
boost (float) 1.0 boost(默认 1.0)
eager_global_ordinals (bool) false eager_global_ordinals(默认 false)
fields fields
ignore_above (int) 2147483647 ignore_above(默认值为 2147483647)
index (bool) true index(默认 true)
index_options (docs/freqs/positions/offsets) docs index_options(默认 docs)
norms (bool) false norms(默认 false)
null_value null null_value(默认关闭)
store (bool) false store(默认 false)
similarity BM25 similarity(默认 BM25)
normalizer null normalizer(默认 null)

1-2、 数字 (Numeric)

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

type 值 描述
long 8 字节,一个有符号的64位整数,最小值-2^63,最大值2^63-1。
integer 4 字节,一个有符号的32位整数,最小值为-2^31,最大值为2^31-1。
short 一个有符号的16位整数,最小值为-32,768,最大值为32,767。
byte 一个有符号的8位整数,最小值为-128,最大值为127。
double 双精度64位IEEE 754浮点数,限制为有限值。
float 一种32位的单精度IEEE 754浮点数,限制为有限值。
half_float 半精度的16位IEEE 754浮点数,限制为有限值。
scaled_float 一个浮点数,由一个固定的双标度因子支持。scaling_factor = 100

支持的参数

参数名称 默认值 详情连接
coerce (bool) true coerce
boost (int/float) 1.0 boost
doc_values (bool) true doc_values
ignore_malformed (bool) false ignore_malformed
index (bool) true index
null_value null null_value
store (bool) false store
scaled_float 接收一个附加参数 scaling_factor scaled_float
scaling_factor (int) scaling_factor

1-3、日期 (date)

1、JSON没有日期数据类型,所以Elasticsearch中的日期可以是: 包含格式化日期的字符串,例如“2015-01-01”或“2015/01/01 12:10:30”。

2、排序默认使用毫秒为单位

支持的参数

参数名称 默认值 详情连接
boost (int/float) 1.0 boost
doc_values (bool) true doc_values
format (string) strict_date_optional_time、epoch_millis doc_values
locale 根据环境语言
ignore_malformed (bool) false ignore_malformed
index (bool) true index
null_value null null_value
store (bool) false store

1-3、日期纳秒 (date_nanos)

1、此数据类型是对日期数据类型的补充。然而,两者之间有一个重要的区别。现有的日期数据类型以毫秒分辨率存储日期。date_nanos数据类型以毫微秒的分辨率存储日期,这限制了它的日期范围(大约从1970年到2262年),因为自epoch以来,日期仍然以长毫微秒的形式存储

2、您还可以指定由||分隔的多个日期格式。可以使用与date字段相同的映射参数。

3、即使在使用date_nanos字段时,聚合的分辨率仍然是毫秒级的。

1-4、布尔 (boolean)

布尔字段接受JSON真值和假值,但也可以接受解释为真或假的字符串:

支持的参数

参数名称 默认值 详情连接
boost (int/float) 1.0 boost
doc_values (bool) true doc_values
index (bool) true index
null_value null null_value
store (bool) false store

1-5、二进制 (binary)

二进制类型接受二进制值作为Base64编码的字符串。
该字段默认不存储,也不能搜索:

参数名称 默认值 详情连接
doc_values (bool) false doc_values
store (bool) false store

1-6、范围 (range)

TYPE 描述
integer_range 一组32位有符号整数,最小值为-2^31,最大值为2^31-1。
float_range 单精度32位IEEE 754浮点值的范围。
long_range 一组有符号的64位整数,最小值为-2^63,最大值为2^63-1。
double_range A range of double-precision 64-bit IEEE 754 floating point values.
date_range 以无符号64位整数形式表示的自系统历元以来经过的日期值范围。
ip_range 支持IPv4或IPv6(或混合)地址的ip值范围。

支持的参数

参数名称 默认值 详情连接
coerce (bool) true coerce
boost (int/float) 1.0 boost
index (bool) true index
store (bool) false store

2、复杂类型

2-1、对象 (object)

1、内部字段可以在查询、聚合等中引用,使用点符号: root.desk

2、如果需要索引对象数组而不是单个对象,请首先读取嵌套对象(nested)。

3、对象,用于单个JSON对象

支持的参数

参数名称 默认值 描述 详情连接
dynamic (true/false/strict) true 是否将新字段动态添加到表中
1、true 允许动态添加到表中,并且添加索引
2、false 允许动态添加到表中,不添加索引
3、strict 禁止动态添加字段
dynamic)
enabled (bool) true 对象字段的 JSON 值是被解析和索引还是被忽略 enabled
properties 对象中的字段,可以是任何数据类型,包括对象。可以向现有对象添加新属性。 properties

2-2、嵌套对象 (nested)

1、嵌套的JSON对象数组

参数名称 默认值 描述 详情连接
dynamic (true/false/strict) true 是否将新字段动态添加到表中
1、true 允许动态添加到表中,并且添加索引
2、false 允许动态添加到表中,不添加索引
3、strict 禁止动态添加字段
dynamic)
properties 对象中的字段,可以是任何数据类型,包括对象。可以向现有对象添加新属性。 properties

3、空间/地址位置 (GEO)

3-1、Geo-point

1、用于lat/lon点的geo_point

2、请注意,字符串地理点的顺序是lat,lon,而数组地理点的顺序是相反的:lon,lat。

3、只使用前12个字符,因此在geohash中指定超过12个字符并不会增加精度

支持的参数

参数名称 默认值 描述 详情连接
ignore_malformed (bool) false ignore_malformed
null_value null null_value
ignore_z_value

3-2、Geo-shape

1、geo_shape用于复杂的形状,如多边形

4、特别类型

对对应的类型做了特别处理的

4-1、IP

用于IPv4和IPv6地址的ip

您还可以使用ip_range数据类型在单个字段中存储ip范围。

支持的参数

参数名称 默认值 描述 详情连接
boost (int|float) 1.0 boost
doc_values (bool) true true 加快聚合、排序、脚本编写速度。false 节约空间 doc_values(默认 true)
index (bool) true index
null_value null null_value
store (bool) false store

4-2、完成补全/推荐 (Completion)

提供自动完成建议

4-3、Token_count

token_count用于计算字符串中的令牌数量

用于统计做了标记的字段的index数目,该值会一直增加,不会因为过滤条件而减少。

支持的参数

参数名称 默认值 描述 详情连接
analyzer 分析器,必需的。请使用没有令牌筛选器的分析器。 analyzer
enable_position_increments (bool) true
boost (int|float) 1.0 boost
doc_values (bool) true true 加快聚合、排序、脚本编写速度。false 节约空间 doc_values(默认 true)
index (bool) true index
null_value null null_value
store (bool) false store

4-4、mapper-murmur3

4-5、mapper-annotated-text

4-6、Join

父子文档

4-7、Rank_feature

1、来存储特征向量,数据不能为0和负数,查询时只能使用rank_feature query,该字段主要为支持后续机器学习相关功能做准备

2、rank_feature字段不支持查询、排序或聚合。
它们只能在rank_feature查询中使用。

4-8、Dense vector

他的功能是实验性的,在将来的版本中可能会完全改变或删除

4-9、查询期间的即时搜索 (Search-as-you-type)

支持的参数

参数名称 默认值 描述 详情连接
analyzer 分析器,它应该用于分析的字符串字段,无论是在索引时还是在搜索时(除非被search_analyzer覆盖)。默认索引分析器或标准分析器。 analyzer
index_options (docs/freqs/positions/offsets) positions index_options(默认 docs)
norms (bool) true norms
store (bool) false store
search_analyzer 默认为分析器设置 在分析字段的搜索时使用的分析器。默认为分析器设置。 search_analyzer
search_quote_analyzer 默认设置为search_analyzer 当遇到短语时,应该在搜索时使用的分析器。默认设置为search_analyzer。
similarity BM25 similarity
term_vector no term_vector

4-10、别名 (Alias)

1、定义现有字段的别名。

2、对于别名的目标有一些限制:
目标必须是一个具体的字段,而不是对象或另一个字段别名。
目标字段必须在创建别名时存在。
如果定义了嵌套对象,则字段别名必须具有与其目标相同的嵌套范围

4-11、Flattened

1、允许将整个JSON 对象作为单个字段建立索引。

2、只允许基本查询(term, terms, and terms_set / prefix / range / match and multi_match / query_string and simple_query_string / exists),不支持数值范围查询或高亮显示。有关这些限制的进一步信息可以在受支持的操作部分中找到。

支持的参数

参数名称 默认值 描述 详情连接
boost (float) 1.0 boost
depth_limit (int) 20 就嵌套内部对象而言,平坦对象字段允许的最大深度。如果扁平对象字段超过此限制,则会抛出错误。默认为20。
eager_global_ordinals (bool) false eager_global_ordinals
doc_values (bool) true doc_values
ignore_above 超过此限制的叶子值将不被索引。默认情况下,没有限制,所有值都将被索引。注意,这个限制适用于扁平对象字段中的叶值,而不是整个字段的长度。 ignore_above
index_options (docs/freqs/positions/offsets) docs index_options(默认 docs)
null_value null null_value
similarity BM25 similarity
split_queries_on_whitespace (bool) false 最后一行

4-12、Shape

形状数据类型便于对任意x、y笛卡尔形状(如矩形和多边形)进行索引和搜索。它可用于索引和查询坐标位于二维平面坐标系中的几何图形。

5、数组 (array)

在Elasticsearch中,数组不需要专用字段数据类型。
默认情况下,任何字段都可以包含零个或多个值,但是数组中的所有值必须具有相同的数据类型。
看到数组。