CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Elasticsearch 入门/课时/查询 DSL
RawBlame
课时目录12 节

Elasticsearch 入门

  1. 01搜索引擎是什么
  2. 02核心概念
  3. 03Docker 单节点
  4. 04Mapping 与字段类型
  5. 05索引 CRUD
  6. 06查询 DSL
  7. 07聚合入门
  8. 08Spring Data Elasticsearch
  9. 09数据同步
  10. 10分片与扩容
  11. 11Kibana 可视化
  12. 12综合练习

查询 DSL

match、term、bool、filter vs query。

40 分钟

查询 DSL

Elasticsearch Query DSL 用 JSON 描述检索逻辑:match 全文、term 精确、bool 组合。理解 query vs filter 对性能与 _score 的影响。

学习目标

  • 编写 match、term、bool 查询
  • 区分 filter 上下文与 query 上下文
  • 为课程搜索实现多字段 + 分类过滤

核心内容

match 全文检索

curl -s -X POST "localhost:9200/tracks/_search" -H "Content-Type: application/json" -d '
{
  "query": {
    "match": {
      "title": "Spring Boot"
    }
  },
  "_source": ["slug", "title", "category"]
}'

operator: "and" 要求所有词都出现;默认 or 更宽松。

term 精确匹配

curl -s -X POST "localhost:9200/tracks/_search" -H "Content-Type: application/json" -d '
{
  "query": {
    "term": { "category": "backend" }
  }
}'

注意:term 不对 text 字段分词结果查询;过滤 category 等 keyword 字段。对 title 用 match 而非 term。

bool 组合

curl -s -X POST "localhost:9200/tracks/_search" -H "Content-Type: application/json" -d '
{
  "query": {
    "bool": {
      "must": [
        { "multi_match": {
            "query": "数据库",
            "fields": ["title^2", "summary"]
        }}
      ],
      "filter": [
        { "term": { "level": "intermediate" } },
        { "terms": { "category": ["backend", "devops"] } }
      ]
    }
  },
  "size": 10,
  "highlight": {
    "fields": { "title": {}, "summary": {} }
  }
}'

must 参与 _score;filter 不计分可缓存——category、level 等过滤放 filter。

对照 MySQL:WHERE category IN (...) + 全文索引。复杂相关性用 ES 实验 index;权威列表 仍走 spring-boot-essentials JPA 分页。

练习

  • 实现「标题含 Java + category=backend」的 bool 查询
  • 对比同一条件放在 must vs filter 的 _score 差异
  • 加 highlight,确认摘要片段返回

小结

match 搜 text,term 滤 keyword,bool 组合;filter 不计分更高效。 下一课聚合入门。

加载本节练习…
← 上一课索引 CRUD下一课 →聚合入门