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 用于全文搜索。了解它们的差异和适用情况对于构建有效的搜索查询至关重要。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearchtermterms是用来进行查询的两个不同的操作。term查询用于查找某个字段包含特定关键词的文档。例如,可以使用term查询来查找标题字段包含"blog"的文档。而terms查询则用于查找某个字段包含多个关键词的文档。例如,可以使用terms查询来查找标题字段同时包含"blog"和"first"的文档。\[1\] 另外,Elasticsearch还有match查询,它会使用分词器对字段进行分词操作,然后再进行查询。与term查询不同,match查询是模糊查询,它会将查询的关键词进行分词,并认为这些分词是独立的单词。例如,可以使用match查询来查找标题字段包含"my"和"ss"的文档,它会将"my ss"分词为两个单词进行查询。\[2\] 综上所述,termterms查询用于精确查询某个字段包含特定关键词或多个关键词的文档,而match查询则用于模糊查询,并对查询的关键词进行分词操作。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [ES学习之termterms区别](https://blog.csdn.net/sinat_34241861/article/details/117224506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [EStermtermsmatch的区别](https://blog.csdn.net/fan5522009/article/details/121004712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值