版本:>= 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中,数组不需要专用字段数据类型。
默认情况下,任何字段都可以包含零个或多个值,但是数组中的所有值必须具有相同的数据类型。
看到数组。