Elasticsearch 系列专题 - 第三篇:搜索与查询

搜索是 Elasticsearch 的核心功能之一。本篇将介绍如何构建高效的查询、优化搜索结果,以及调整相关性评分,帮助你充分发挥 Elasticsearch 的搜索能力。


1. 基础查询

1.1 Match Query 与 Term Query 的区别
  • Match Query:用于全文搜索,会对查询词进行分词。

    GET /my_index/_search
    {
      "query": {
        "match": {
          "title": "Elasticsearch 入门"
        }
      }
    }
    
    • 匹配包含 “Elasticsearch” 或 “入门” 的文档。
    • 适用于 text 类型字段。
  • Term Query:用于精确匹配,不分词。

    GET /my_index/_search
    {
      "query": {
        "term": {
          "author.keyword": "text"
        }
      }
    }
    
    • 仅匹配 author 精确为 “Text” 的文档。
    • 适用于 keyword 类型字段。
1.2 多条件查询(Bool Query)

Bool Query 组合多个条件:

  • must:必须满足(AND)。
  • should:至少满足一个(OR)。
  • must_not:必须不满足(NOT)。
  • filter:过滤,不影响评分。

示例:

GET /my_index/_search
{
  "query": {
    "bool": {
      "must": { "match": { "title": "Elasticsearch" } },
      "filter": { "term": { "author.keyword": "Text" } },
      "must_not": { "range": { "date": { "lte": "2025-01-01" } } }
    }
  }
}

Mermaid 图示 - Bool Query 逻辑

你可能感兴趣的:(elasticsearch,jenkins,大数据)