You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用与查询Elasticsearch中的keyword字段?

如何使用Elasticsearch中text字段的keyword子字段

背景说明

你插入文档后,Elasticsearch自动为color这类字符串字段生成了text主字段+keyword子字段的映射:

  • text类型会对内容分词,适合全文搜索(比如搜索"blu"能匹配"Blue")
  • keyword子字段会保留原始字符串不分词,适合精确匹配、聚合统计、排序这类场景

存储数据时无需额外操作,Elasticsearch会自动把color的内容同步存入两个字段中。

查询keyword子字段的常用方式

1. 精确匹配查询(term查询)

如果你要查找颜色**完全等于"Blue"**的文档,直接使用color.keyword作为查询字段:

GET /vehicles/_search
{
  "query": {
    "term": {
      "color.keyword": "Blue"
    }
  }
}

如果用主字段color做term查询,可能因为分词逻辑导致匹配不到预期结果,而keyword子字段是严格匹配原始值的。

2. 聚合统计

统计每种颜色的文档数量,必须用color.keyword,否则会按分词后的单个词拆分统计(比如"Light Blue"会被拆成"light"和"blue"分开计数):

GET /vehicles/_search
{
  "size": 0,
  "aggs": {
    "color_count": {
      "terms": {
        "field": "color.keyword"
      }
    }
  }
}

3. 按精确值排序

如果要按颜色的原始字符串排序,使用color.keyword作为排序字段:

GET /vehicles/_search
{
  "sort": [
    {
      "color.keyword": "asc"
    }
  ]
}

内容的提问来源于stack exchange,提问作者william007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:01:20