字段数据类型
每一个字段有一个字段数据类型或者字段类型。这个类型指示了字段包含的数据的种类(比如字符串或布尔值)和它的目标用途。例如,你可以索引字符串为 text 和 keyword 字段。然而, text 字段值用于全文搜索做分析而 keyword 字符串原样保留用于过滤和排序。
字段类型按家族分组。同一家族的类型有着几乎一样的搜索行为但是可能有着不同的空间使用或者性能特性。
现在,有两个类型家族, keyword 和 text。其它的家族都是只有一个字段类型。例如, boolean 类型家族只有一个字段组成: boolean。
普通类型
binary : 二进制值编码为一个 Base64 字符串。
boolean : ture 和 false 值。
Keywords : keyword 家族,包含 keyword, constant_keyword 和 wildcard。
Numbers : 数字化类型,比如 long 和 double,常常表示数量。
Dates : 日期类型,包括 date 和 date_nanos。
alias : 为一个现有的字段定义一个别名。
对象相关类型
object : 一个 JSON 对象。
flattened : 一个整个的 JSON 对象作为一个单独的字段类型。
nested : 一个保留了它的子字段之间关系的 JSON 对象。
join : 在同样的索引里为文档定义一个 父/子 关系。
结构化数据类型
Range : 范围类型,比如 long_range, double_range, date_range 和 ip_range。
ip : IPv4 和 IPv6 地址。
version : 软件版本。支持 语义化版本优先级规则。
murmur3 : 计算和存储哈希值。
聚合数据类型
aggregate_metric_double : 预聚合的度量值。
histogram : 柱状图形式的预聚合的数字值。
文本搜索类型
text 字段 : text 家族,包括 text 和 match_only_text。用于分析的,非结构化的文本。
annotated-text : 文本包含特定的标注。用于识别命名的实体。
completion : 用于自动完成建议。
search_as_you_type : 为键入时完成的类文本类型。
token_count : 一个文本里的 token 的总数。
文档等级类型
dense_vector : 记录浮点值的密集向量。
rank_feature : 记录一个数字特征,以提高查询时的命中率。
rank_features : 记录数字特征,以提高查询时的命中率。
空间数据类型
geo_point : 维度和经度点。
geo_shape : 复杂的形状,比如多边形。
point : 任意的笛卡尔点。
shape : 任意的笛卡尔形状。
其它类型
percolator : 索引用 查询 DSL写的查询。
数组
在 Elasticsearch,数组不需要一个专用的字段数据类型。任何的字段默认都能包含 0 或多个值,然而,数组中的所有值都必须具有相同的字段类型。查看数组。
多字段
用不同的方式索引相同的字段用于不同的目的,这经常是有用的。例如,一个 string 字段可以被映射为一个 text 字段用于全文搜索,也可以映射为一个 keyword 字段用于排序和聚合。或者,你可以使用 standard 分析器,english分析器,french分析器来索引一个文本字段。
这是多字段的目的。多数的字段类型通过 fields参数支持多字段。