字段数据类型
每个字段都有一个字段数据类型,或者字段类型。该类型指示字段包含的数据种类(例如字符串或布尔值)及其预期用途。例如,您可以将字符串索引到 text 和 keyword 字段。但是,text 字段的值会被分析以进行全文搜索,而 keyword 字符串则保持不变,用于过滤和排序。
字段类型按族分组。同一族内的类型具有完全相同的搜索行为,但可能具有不同的空间使用或性能特征。
目前,有两个类型族:keyword 和 text。其他类型族只有一个字段类型。例如,boolean 类型族包含一个字段类型:boolean。
binary- 编码为 Base64 字符串的二进制值。
booleantrue和false值。- Keywords
- keyword 族,包括
keyword、constant_keyword和wildcard。 - 数字
- 数字类型,例如
long和double,用于表示数量。 - 日期
- 日期类型,包括
date和date_nanos。 alias- 为现有字段定义别名。
object- JSON 对象。
flattened- 整个 JSON 对象作为一个字段值。
nested- 一个 JSON 对象,它保留其子字段之间的关系。
join- 定义同一索引中文档的父/子关系。
passthrough- 为同一级别的子字段提供别名。
- 范围
- 范围类型,例如
long_range、double_range、date_range和ip_range。 ip- IPv4 和 IPv6 地址。
version- 软件版本。支持 语义版本 优先级规则。
murmur3- 计算并存储值的哈希。
aggregate_metric_double- 预聚合的指标值。
直方图- 预聚合的数值,形式为直方图。
text字段- text 族,包括
text和match_only_text。经过分析的非结构化文本。 annotated-text- 包含特殊标记的文本。用于识别命名实体。
- [
completion] - 用于自动完成建议。有关完成建议器的更多信息,请参阅 建议器示例。
search_as_you_type- 类似于
text的类型,用于边输入边自动完成。 semantic_text- 用于执行 语义搜索。
token_count- 文本中的 token 计数。
dense_vector- 记录浮点值的密集向量。
sparse_vector- 记录浮点值的稀疏向量。
rank_feature- 记录一个数字特征,用于在查询时提升命中。
rank_features- 记录数字特征,用于在查询时提升命中。
percolator- 索引用 Query DSL 编写的查询。
在 Elasticsearch 中,数组不需要专用的字段数据类型。默认情况下,任何字段都可以包含零个或多个值,但数组中的所有值必须是相同的字段类型。请参阅 数组。
为了不同的目的,通常需要以不同的方式索引同一个字段。例如,一个 string 字段可以映射为 text 字段以进行全文搜索,也可以映射为 keyword 字段以进行排序或聚合。或者,您可以使用 standard 分析器、english 分析器和 french 分析器 来索引一个文本字段。
这就是多字段的目的。大多数字段类型通过 fields 参数支持多字段。