随笔 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,从根上解决 💡

相关推荐
dingzd951 分钟前
多平台运营数据割裂跨境卖家如何搭建统一看板
大数据·人工智能·市场营销·跨境电商·亚马逊
TDengine (老段)4 分钟前
TDengine IDMP 1-产品简介
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
鸿乃江边鸟14 分钟前
从 SortExec 的排序来谈 Spark Tungsten 计划中的缓存友好特性
大数据·spark
朗心心理11 小时前
朗心科技:以数智化引领心理健康服务新标杆
大数据·人工智能·科技·心理健康·朗心科技·数智化心理育人·一站式心理中心建设
无忧智库12 小时前
破局与重构:大型集团化协同管理平台的全景式深度解构(PPT)
大数据
王码码203512 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
码云数智-大飞13 小时前
进程、线程与协程:并发模型的演进与 Go 语言的 GMP 革命
大数据
XiaoMu_00114 小时前
基于大数据的糖尿病数据分析可视化
大数据·数据挖掘·数据分析
阿里云大数据AI技术14 小时前
Celeborn 如何让 EMR Serverless Spark 的 Shuffle 舒心、放心、安心
大数据·spark
AI营销快线14 小时前
AI营销获客难?原圈科技深度解析SaaS系统增长之道
大数据·人工智能