当前位置: 首页 > news >正文

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

相关文章:

  • 【UE5 C++课程系列笔记】35——HTTP基础——HTTP客户端异步请求API接口并解析响应的JSON
  • 【redis进阶三】分布式系统之主从复制结构(1)
  • deepseek微调环境配置
  • 如何对大模型进行优化,以提高其性能和效率?
  • 【计网】网络交换技术之分组交换(复习自用,重要1)
  • go语言学习笔记:gin + gorm + mysql 用户增删改查案例入门
  • 【Spring Boot 过滤器】
  • 中断的硬件框架
  • 【题解-洛谷】P2884 [USACO07MAR] Monthly Expense S
  • FreeBSD从14.1升级到14.2后桌面图标消失桌面背景消失且无法设置
  • 4.13日总结
  • 【RL系列】DAPO: An Open-Source LLM Reinforcement Learning System at Scale
  • 【HTTP】:应用层协议HTTP(1)
  • 银河麒麟服务器操作系统V10安装Nvidia显卡驱动和CUDA(L40)并安装ollama运行DeepSeek【开荒存档版】
  • 【中间件】nginx反向代理实操
  • 洛谷刷题小结
  • 编译uboot的Makefile编写
  • system V 共享内存
  • React 记账本项目实战:多页面路由、Context 全局
  • Dolphinscheduler3.2.1运行Java Jar路径重复的BUG修复问题
  • 万科:存续债券均正常付息兑付
  • 茅台1935今年动销达到预期,暂无赴港上市计划!茅台业绩会回应多个热点
  • A股高开高走:沪指涨0.82%,创指涨2.63%,超4100股收涨
  • 专访|家人眼中的周碧初:用色彩写诗,实践油画“民族化”
  • 印方称所有敌对行动均得到反击和回应,不会升级冲突
  • 公安部部署“昆仑2025”专项工作,严打环食药等领域突出犯罪