Elasticsearch 中的 term、terms 和 match 查询

目录

term 查询

terms 查询

match 查询

注意事项

结论


   Elasticsearch 提供了多种查询类型,用于不同的搜索需求。termtermsmatch 是其中最常用的一些查询类型。下面分别介绍每种查询类型的用法和特点。

term 查询

  term 查询用于精确值匹配。它通常用于关键字(keyword)类型的字段,或者已经过精确值(如数字、日期等)处理的文本字段。term 查询不会对查询的文本进行分词。

示例

GET /example_index/_search
{
  "query": {
    "term": {
      "status": {
        "value": "active"
      }
    }
  }
}

  这个查询会精确匹配字段 status 中值为 "active" 的文档。

terms 查询

  terms 查询是 term 查询的扩展,它允许你一次性检索多个精确值。

示例

GET /example_index/_search
{
  "query": {
    "terms": {
      "status": ["active", "pending", "closed"]
    }
  }
}

   这个查询会匹配字段 status 中值为 "active"、"pending" 或 "closed" 的文档(他是一个或的关系,只要Doc的status字段包含任意一个就命中)。

match 查询

   match 查询是一个标准的全文搜索查询,它会对查询文本进行分词处理,然后搜索分词后的结果。match 查询适用于全文字段(text)。

示例

GET /example_index/_search
{
  "query": {
    "match": {
      "description": "quick brown fox"
    }
  }
}

   这个查询会对 "quick brown fox" 进行分词,然后在 description 字段中搜索这些分词。

注意事项

   1. 分析器

  match 查询会使用字段相关联的分析器进行分词,而 termterms 查询则不会。

  2. 性能

  termterms 查询通常比 match 查询更快,因为它们不涉及分词过程,直接在倒排索引中查找精确值。

  3. 用例

  • 使用 term 查询来匹配文档中的精确值,如状态标签、ID等。
  • 使用 terms 查询可以一次性匹配多个精确值,适合于筛选符合多个条件的文档。
  • 使用 match 查询来执行全文搜索,适合于搜索文本内容。

结论

   在 Elasticsearch 中,termtermsmatch 查询是基础的搜索操作,它们分别适用于不同的场景。termterms 用于精确匹配,而 match 用于全文搜索。了解它们的差异和适用情况对于构建有效的搜索查询至关重要。

相关推荐

  1. Elasticsearch term、terms match 查询

    2024-01-20 16:54:05       62 阅读
  2. ElasticSearch-match_phrase查询

    2024-01-20 16:54:05       22 阅读
  3. Elasticsearch(10) match使用

    2024-01-20 16:54:05       39 阅读
  4. esmatch,term,match_phrase

    2024-01-20 16:54:05       36 阅读
  5. Elasticsearch(13) match_phrase使用

    2024-01-20 16:54:05       45 阅读
  6. Elasticsearch(14) match_phrase_prefix使用

    2024-01-20 16:54:05       36 阅读
  7. Elasticsearch(12) match_bool_prefix使用

    2024-01-20 16:54:05       46 阅读
  8. Elasticsearch(15) multi_match使用

    2024-01-20 16:54:05       45 阅读
  9. ElasticSearchScirpt Score查询

    2024-01-20 16:54:05       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 16:54:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 16:54:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 16:54:05       82 阅读
  4. Python语言-面向对象

    2024-01-20 16:54:05       91 阅读

热门阅读

  1. ACL访问控制列表

    2024-01-20 16:54:05       54 阅读
  2. Centos7系统没有tab补全功能

    2024-01-20 16:54:05       55 阅读
  3. 判断自守数

    2024-01-20 16:54:05       55 阅读
  4. 算法训练营Day35(贪心4)

    2024-01-20 16:54:05       53 阅读
  5. 用python解二元一次方程

    2024-01-20 16:54:05       51 阅读
  6. js中浅拷贝和深拷贝的区别

    2024-01-20 16:54:05       61 阅读