ES常用查询方式

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

ES常用查询方式

方式 说明
Match Query(匹配查询) 根据字段的内容进行全文匹配查询,可以使用matchmatch_allmulti_match
Term Query (精确查询) 根据字段的精确值进行查询,适用于keyword类型(直接在字段中查找条件值)或者已经执行过分词的字段(在倒排索引中查找条件值),可以使用termterms
Range Query(范围查询) 根据字段的范围值行查询,可以用来查询数字或日期范围,例如大于、小于、范围内等
Bool Query (布尔查询) 通过逻辑运算符(mustmust_notshould)组合多个查询条件,实现更复杂的查询逻辑
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引擎首先分析查询字符串,使用指定的分析器对查询字符串进行分词,然后根据分词结果构建一个默认逻辑的布尔查询,例如对于以下查询:

json 复制代码
"query":{  
      "match":{  
         "name":"Steve Wang"
      }
}

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

json 复制代码
{
  "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)
相关推荐
终不悔3 小时前
Elasticsearch新手入门与性能优化实战
elasticsearch
Elastic 中国社区官方博客4 小时前
通过 AIOps 、生成式 AI 和机器学习实现更智能的可观测性
大数据·人工智能·elasticsearch·机器学习·搜索引擎·ai·可用性测试
Elasticsearch1 天前
通过 AIOps 、生成式 AI 和机器学习实现更智能的可观测
elasticsearch
DavidSoCool2 天前
Elasticsearch 中实现推荐搜索(方案设想)
大数据·elasticsearch·搜索引擎
文艺倾年2 天前
【八股消消乐】Elasticsearch优化—检索Labubu
大数据·elasticsearch·搜索引擎
会飞的小妖2 天前
Elasticsearch相关操作
elasticsearch
Elastic 中国社区官方博客2 天前
ECK 简化:在 GCP GKE Autopilot 上部署 Elasticsearch
大数据·elasticsearch·搜索引擎·k8s·全文检索·googlecloud
超级小忍2 天前
Spring Boot 集成 Elasticsearch(含 ElasticsearchRestTemplate 示例)
spring boot·elasticsearch
乐世东方客3 天前
Kafka使用Elasticsearch Service Sink Connector直接传输topic数据到Elasticsearch
分布式·elasticsearch·kafka
m0_719084113 天前
es相关知识
elasticsearch