Elasticsearch 中的 term、terms 和 match 查询

目录

[term 查询](#term 查询)

[terms 查询](#terms 查询)

[match 查询](#match 查询)

注意事项

结论


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

term 查询

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

示例

java 复制代码
GET /example_index/_search
{
  "query": {
    "term": {
      "status": {
        "value": "active"
      }
    }
  }
}

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

terms 查询

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

示例

java 复制代码
GET /example_index/_search
{
  "query": {
    "terms": {
      "status": ["active", "pending", "closed"]
    }
  }
}

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

match 查询

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

示例

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

相关推荐
edisao5 分钟前
[特殊字符] 从助手到引擎:基于 GPT 的战略协作系统演示
大数据·人工智能·gpt
IT毕设梦工厂42 分钟前
大数据毕业设计选题推荐-基于大数据的国家医用消耗选品采集数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·信息可视化·spark·毕业设计·数据可视化·bigdata
华略创新2 小时前
利用数据分析提升管理决策水平
大数据·数据分析·crm·管理系统·软件
pingao1413782 小时前
PG-210-HI 山洪预警系统呼叫端:筑牢山区应急预警 “安全防线”
大数据·人工智能·科技
庄小焱2 小时前
大数据存储域——Kafka设计原理
大数据·kafka·消息中间件
Elastic 中国社区官方博客3 小时前
带地图的 RAG:多模态 + 地理空间 在 Elasticsearch 中
大数据·人工智能·elasticsearch·搜索引擎·ai·语言模型·全文检索
做萤石二次开发的哈哈3 小时前
萤石安全生产监管解决方案:构建企业安全智能化防护网
大数据·人工智能
万米商云3 小时前
碎片化采购是座金矿:数字化正重构电子元器件分销的价值链
大数据·人工智能·电子元器件·供应链采购
健康有益科技3 小时前
大模型食材识别技术革新:AI重构精准营养管理
大数据·人工智能·计算机视觉·重构
阿里云大数据AI技术4 小时前
AI搜索的黑科技?DeepSearch 究竟“深”藏着什么秘密?
搜索引擎