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

相关推荐
青云交2 小时前
Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害数值模拟与预警中的应用(388)
java·大数据·flink·分布式计算·预警系统·数值模拟·气象灾害
蓝倾9764 小时前
唯品会以图搜图(拍立淘)API接口调用指南详解
java·大数据·前端·数据库·开放api接口
lifallen5 小时前
HBase的异步WAL性能优化:RingBuffer的奥秘
大数据·数据库·分布式·算法·性能优化·apache·hbase
WLJT1231231236 小时前
冷冻食材,鲜美生活的新选择
大数据
2301_769006787 小时前
祝贺!1464种期刊被收录,CSCD 核心期刊目录更新!(附下载)
大数据·数据库·人工智能·搜索引擎·期刊
iGarment8 小时前
服装外贸系统:高效管理,全流程优化方案
大数据·云计算
武汉格发Gofartlic8 小时前
HFSS许可证常见问题及解决方案
大数据·运维·人工智能·数据分析·自动化
数据猿视觉9 小时前
宁商平台税务升级之路:合规为纲,服务为本
大数据·人工智能·microsoft
胖哥真不错10 小时前
数据集: TSPLIB旅行商问题-对称TSP数据集
大数据·机器学习·数据挖掘·优化算法·旅行商问题·tsplib·对称tsp数据集