searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Elasticsearch(ES)中的`term`和`match`查询

2024-08-20 09:58:33
91
0

1. term查询

term查询是一种精确匹配查询,它用于查找包含指定术语(term)的文档。它适用于keyword类型的字段,或者被映射为not_analyzed的字段,这意味着字段的内容不会被分析成单词。term查询不会对查询字符串进行分析,而是将查询字符串视为一个整体来匹配文档。

示例​:

{
  "query": {
    "term": {
      "username.keyword": "john"
    }
  }
}
  • 上述查询将返回包含username字段的值为"john"的文档。

2. match查询

match查询是一种全文搜索查询,它对查询字符串进行分析,并根据分析结果匹配文档。match查询适用于text类型的字段,它会将查询字符串分析成单词,然后在文档中查找包含这些单词的文档。

示例​:

{
  "query": {
    "match": {
      "message": "quick brown fox"
    }
  }
}
  • 上述查询将返回包含message字段的值中包含"quick"、"brown"和"fox"中任意一个或多个的文档。

区别总结

  1. 适用场景​:
    • term查询适用于精确匹配,主要用于keyword类型的字段。
    • match查询适用于全文搜索,主要用于text类型的字段。
  2. 分析行为​:
    • term查询不会对查询字符串进行分析,直接匹配整个查询字符串。
    • match查询会对查询字符串进行分析,然后使用分析结果来匹配文档。
  3. 匹配精度​:
    • term查询是精确匹配,只有在查询字符串完全匹配字段值时才会返回文档。
    • match查询是根据分析后的单词匹配,可以匹配字段值中包含查询单词的文档。

在使用ES进行文本搜索时,根据需求选择合适的查询类型非常重要。如果需要精确匹配或针对keyword类型的字段进行查询,可以使用term查询;如果需要进行全文搜索或对text类型的字段进行查询,可以使用match查询。

0条评论
0 / 1000
施****庆
4文章数
0粉丝数
施****庆
4 文章 | 0 粉丝
原创

Elasticsearch(ES)中的`term`和`match`查询

2024-08-20 09:58:33
91
0

1. term查询

term查询是一种精确匹配查询,它用于查找包含指定术语(term)的文档。它适用于keyword类型的字段,或者被映射为not_analyzed的字段,这意味着字段的内容不会被分析成单词。term查询不会对查询字符串进行分析,而是将查询字符串视为一个整体来匹配文档。

示例​:

{
  "query": {
    "term": {
      "username.keyword": "john"
    }
  }
}
  • 上述查询将返回包含username字段的值为"john"的文档。

2. match查询

match查询是一种全文搜索查询,它对查询字符串进行分析,并根据分析结果匹配文档。match查询适用于text类型的字段,它会将查询字符串分析成单词,然后在文档中查找包含这些单词的文档。

示例​:

{
  "query": {
    "match": {
      "message": "quick brown fox"
    }
  }
}
  • 上述查询将返回包含message字段的值中包含"quick"、"brown"和"fox"中任意一个或多个的文档。

区别总结

  1. 适用场景​:
    • term查询适用于精确匹配,主要用于keyword类型的字段。
    • match查询适用于全文搜索,主要用于text类型的字段。
  2. 分析行为​:
    • term查询不会对查询字符串进行分析,直接匹配整个查询字符串。
    • match查询会对查询字符串进行分析,然后使用分析结果来匹配文档。
  3. 匹配精度​:
    • term查询是精确匹配,只有在查询字符串完全匹配字段值时才会返回文档。
    • match查询是根据分析后的单词匹配,可以匹配字段值中包含查询单词的文档。

在使用ES进行文本搜索时,根据需求选择合适的查询类型非常重要。如果需要精确匹配或针对keyword类型的字段进行查询,可以使用term查询;如果需要进行全文搜索或对text类型的字段进行查询,可以使用match查询。

文章来自个人专栏
区块链前沿
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0