前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES常用查询方式

ES常用查询方式

作者头像
Steve Wang
发布2024-05-03 09:05:24
500
发布2024-05-03 09:05:24
举报
文章被收录于专栏:从流域到海域从流域到海域

Elasticsearch(ES)作为功能强大的检索引擎,提供了多种查询方式,在不同的场景下需要选择合适的查询方式以取得最佳查询效果。

ES常用查询方式

方式

说明

Match Query(匹配查询)

根据字段的内容进行全文匹配查询,可以使用match、match_all、multi_match等

Term Query (精确查询)

根据字段的精确值进行查询,适用于keyword类型(直接在字段中查找条件值)或者已经执行过分词的字段(在倒排索引中查找条件值),可以使用term和terms

Range Query(范围查询)

根据字段的范围值行查询,可以用来查询数字或日期范围,例如大于、小于、范围内等

Bool Query (布尔查询)

通过逻辑运算符(must、must_not、should)组合多个查询条件,实现更复杂的查询逻辑

Match Phrase Query(短语匹配查询)

根据字段中连续的短语进行查询,适用于需要保持短语顺序的查询

Prefix Query(前缀查询)

根据字段的文本前缀进行查询,适用于需要按照前缀匹配查询的场景

Wildcard Query(通配符查询)

使用通配符模式进行查询,支持通配符符号(*和?)进行模糊匹配

Fuzzy Query(模糊查询)

根据字段中的模糊匹配进行查询,可以通过设置fuzziness参数来控制模糊程度

Nested Query(嵌套查询)

嵌套对象进行查询,即查询使用的条件本身也是查询,以便查询嵌套在文档中的相关信息

Aggregation Query(聚合查询)

用于计算、统计和分析数据,包括求和、平均值、最小值、最大值、分组等操作

除了这些常用的查询方式,还有正则表达式查询、复杂查询、地理位置查询等其他查询方式,详见官方文档,这里不再赘述(参考文献第2篇有一个列表,但可能不是最全的)。

Match查询

下面简单介绍一下最常用的match查询方式

Match查询属于全文(full text)查询,不同于Term查询,ES引擎在处理全文搜索时,首先会分析(analyze)查询字符串,然后根据分词结果构建查询,最终发返回查询结果。

匹配查询共有三种类型,分别是布尔(boolean)、短语(phrase)和短语前缀(phrase_prefix),默认的匹配查询是布尔类型,ES引擎首先分析查询字符串,使用指定的分析器对查询字符串进行分词,然后根据分词结果构建一个默认逻辑的布尔查询,例如对于以下查询:

代码语言:javascript
复制
"query":{  
      "match":{  
         "name":"Steve Wang"
      }
}

查询字符串为Steve Wang,分词结果为SteveWang,查询时的逻辑是,只要name字段包含Steve或者Wang任意一个关键字,就返回该文档,等价于如下语句:

代码语言:javascript
复制
{
  "query": {
    "match": {
      "name": {
        "query": "Steve Wang",
        "operator": "or",
        "minimum_should_match": 1
      }
    }
  }
}

其中operatorminimum_should_match是匹配查询的两个控制参数,通过调整operatorminimum_should_match属性值,控制匹配查询的逻辑条件,进而控制引擎返回的结果。默认情况下operator的值是or,minimum_should_match的值是1即包含任意1个关键字,视为匹配成功。也可以更改operator的为and,minimum_should_match为任意非0自然数或者百分比,表示同时匹配minimum_should_match个关键字或者匹配到的关键字占比达到多少视为匹配成功。

进一步的,如果match匹配时未进行分词(keyword类型),或者text类型但分词结果为1(此时和未分词结果相同),执行的是term查询,如果分词得到多个词,则执行terms查询

参考文献
  1. Elasticsearch的多种查询方式
  2. Es支持的查询方式
  3. Elasticsearch 基本使用(五)查询条件匹配方式(query & query_string)
  4. ElasticSearch查询 第四篇:匹配查询(Match)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES常用查询方式
  • Match查询
  • 参考文献
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档