每个字段都有一个字段数据类型或字段类型。此类型指示字段包含的数据类型(如strings或boolean)及其预期用途。例如,可以将strings索引到text和keyword字段。但是,text字段值将被分析以进行全文搜索,而keyword字符串则保留原样以进行过滤和排序。
字段类型按家庭分组。同一家庭中的类型支持相同的搜索功能,但可能具有不同的空间使用或性能特征。
目前,唯一的类型家庭是keyword,它由keyword、constant_keyword和通配符(wildcard)字段类型组成。其他类型家庭只有一个字段类型。例如,布尔类型家庭包含一个字段类型:boolean。
普通的类型
binary :编码为Base64字符串的二进制值。
boolean :true 和 false。
Keywords :关键字家庭,包括keyword、constant_keyword和wildcard。
Numbers :数字类型,如long和double,用于表示金额。
Dates :日期类型,包括date和date_nanos。
alias :定义现有字段的别名。
对象和关系类型
object :JSON object。
flattened :将整个JSON对象作为单个字段值。
nested :保留子字段之间关系的JSON对象。
join :为同一索引中的文档定义父/子关系。
结构化数据类型
Range :范围类型,例如long_range、double_range、date_range和ip_range。
ip :IPv4 and IPv6 addresses。
version :软件版本。支持语义版本控制优先规则。
murmur3 :计算并存储散列值。
聚合数据类型
aggregate_metric_double :预先聚合的度量值。
histogram :以直方图形式预先聚集的数值。
文本查询类型
text :经过分析的非结构化文本。
annotated-text :包含特殊标记的文本。用于标识命名实体。
completion :用于自动完成建议。
search_as_you_type :像文本一样键入,以便键入时完成。
token_count :文本中标记的计数。
文档排序类型
dense_vector :记录浮点值的密集向量。
sparse_vector :记录浮点值的稀疏向量。
rank_feature :记录一个数字特征,以提高查询时的命中率。
rank_features :记录数字特征以提高查询时的命中率。
空间数据类型
geo_point :纬度和经度点。
geo_shape :复杂形状,如多边形。
point :任意笛卡尔点。
shape :任意笛卡尔几何。
Arrays
在Elasticsearch中,数组不需要专用的字段数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值必须是相同的字段类型。
Multi-fields
为不同的目的以不同的方式索引同一字段通常很有用。例如,string字段可以映射为全文搜索的text字段,也可以映射为排序或聚合的keyword字段。或者,我们可以使用标准分析器、英语分析器和法语分析器索引文本字段。
这就是multi-fields的目的。大多数字段类型通过fields参数支持多个字段