首页/数据/NoSQL 速查/text 与 keyword 字段类型选择
Elasticsearch89 条

text 与 keyword 字段类型选择

text 会分词并支持全文检索但默认不能用于排序聚合;keyword 保留整串、适合精确过滤、排序与聚合;字符串两种需求常一起用 multi-field 兼顾。

NoSQL 速查数据更新于 2026-10-12
text分词索引、全文检索、match 查询;排序聚合需额外开 fielddata(耗内存)
keyword整串匹配、term 查询、排序聚合;term 不支持前缀/通配
常见其他类型long/integer/double/date/boolean/ip/geo_point/object/nested/dense_vector

multi-field 示例

multi-field 示例
{
  "properties": {
    "city": {
      "type": "text",
      "fields": {
        "raw": { "type": "keyword", "ignore_above": 256 }
      }
    }
  }
}
对 text 字段直接做 terms 聚合会报 fielddata is disabled;应改用 city.raw 这类 keyword 子字段。

易错点

  • keyword 默认 ignore_above 上限外(如超过 256 字符)不会建索引,聚合结果会缺数据
  • 把说明文本误设为 keyword 会撑大索引,全文检索也失效

数据来源与参考

  • Elasticsearch Guide: Field data types
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌