随笔 20250413 Elasticsearch 的 term 查询

你这个问题非常经典,来自于 Elasticsearch 的 term 查询是精确匹配(case-sensitive,大小写敏感)


🧨 为什么查不到 "World"

你的查询语句是:

复制代码
GET /movie/_search
{
  "query": {
    "term": {
      "tagline": "World"
    }
  }
}

这条语句的含义是:

查找 tagline 字段中精确值为 "World"(区分大小写) 的文档。


🔍 但是你的数据中可能是:

复制代码
{
  "tagline": "world"
}

或者:

复制代码
{
  "tagline": "the world is beautiful"
}

这种情况下,term 查询根本不会命中,因为:

term 查询不会分析(不分词)、不做小写转换、只查精确 token。


✅ 正确写法:使用 match 查询(可自动分词 + 忽略大小写)

复制代码
GET /movie/_search
{
  "query": {
    "match": {
      "tagline": "World"
    }
  }
}

🔥 match 会将 "World" 转为 "world",也会对 tagline 字段做分词处理,因此可以模糊匹配、大小写不敏感。


❓ 但是 term 一定没用吗?

不是,如果你明确知道 taglinekeyword 类型字段(未分词) ,你可以查它的 .keyword

复制代码
GET /movie/_search
{
  "query": {
    "term": {
      "tagline.keyword": "World"
    }
  }
}

但前提是:你需要在字段映射(mapping)中配置了 .keyword(text + keyword)这种类型。


🧠 总结:

你的目的 推荐查询方式
查 "包含 world" match 查询
精确查 "World"(大小写) term + .keyword(非分词字段)
查部分词、模糊匹配 match / match_phrase

需要我帮你分析你 index 的 mapping 吗?你可以贴一下 /movie/_mapping 的结构,我可以告诉你字段类型是否支持 .keyword,从根上解决 💡

相关推荐
诗旸的技术记录与分享6 小时前
Flink-1.19.0源码详解-番外补充3-StreamGraph图
大数据·flink
资讯分享周6 小时前
Alpha系统联结大数据、GPT两大功能,助力律所管理降本增效
大数据·gpt
G皮T7 小时前
【Elasticsearch】深度分页及其替代方案
大数据·elasticsearch·搜索引擎·scroll·检索·深度分页·search_after
TDengine (老段)8 小时前
TDengine STMT2 API 使用指南
java·大数据·物联网·时序数据库·iot·tdengine·涛思数据
用户Taobaoapi20149 小时前
母婴用品社媒种草效果量化:淘宝详情API+私域转化追踪案例
大数据·数据挖掘·数据分析
G皮T10 小时前
【Elasticsearch】检索排序 & 分页
大数据·elasticsearch·搜索引擎·排序·分页·检索·深度分页
飞询13 小时前
Docker 安装 Elasticsearch 9
elasticsearch·docker
小新学习屋13 小时前
Spark从入门到熟悉(篇三)
大数据·分布式·spark
rui锐rui14 小时前
大数据学习2:HIve
大数据·hive·学习
G皮T14 小时前
【Elasticsearch】检索高亮
大数据·elasticsearch·搜索引擎·全文检索·kibana·检索·高亮