ES bool查询

一、bool查询包含四种操作

在Elasticsearch中,可以使用bool查询来实现多条件查询。bool查询是一种组合查询,可以通过组合多个查询条件来实现更复杂的查询需求。bool查询包含以下子查询:

  1. must查询:表示必须满足的查询条件,相当于逻辑运算中的"与"。如果某条文档满足所有的must查询条件,才会被返回。

  2. should查询:表示可选的查询条件,相当于逻辑运算中的"或"。如果某条文档满足其中任意一个should查询条件,则会被返回。

  3. must_not查询:表示必须不满足的查询条件,相当于逻辑运算中的"非"。如果某条文档满足任意一个must_not查询条件,则不会被返回。

以下是一个bool多条件查询的示例:

java 复制代码
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "Hello World" }},
        { "match": { "author": "CSDN" }}
      ],
      "should": [
        { "match": { "category": "Apple" } },
        { "match": { "category": "Banana" }}
      ],
      "must_not": [
        { "match": { "status": "1" }}
      ]
    }
  }
}

上面的查询条件表示查询标题中包含"Elasticsearch"并且作者为"CSDN",或者分类为"Apple"或"Banana",但不包括状态为"1"的文档。

二、功能

1.must 对应mysql的 and a=

2.must not 对应mysql的 and a!=

3.filter 对应mysql的 and a=

4.should 对应mysql的 or a=

三、must和filter比较

1.must算分,filter不算分

2.filter效率比must高

四、filter效率高的原理

1.query context:文档更加匹配查询条件,分数越高越匹配

2.filter context:文档是否匹配查询条件,并且ES会缓存查询结果

相关推荐
隔振降噪研究员3 小时前
裁断机一响,楼板为什么会跟着抖?
大数据·linux·数据库·人工智能
zhongben_keji3 小时前
本地生活 APP 开发:城市 × 品类 × 履约形态的三维网格与三套账
java·大数据·生活
2301_776045234 小时前
山寨币与比特币之间的关系
大数据·人工智能·区块链
一枕槐安48712 小时前
少样本提示(Few-shot)在业务场景的落地实践
大数据·人工智能·意图分类·mmr多样性·knn检索·动态示例选择
roman_日积跬步-终至千里13 小时前
零售与数仓(二):从经营问题到可信证据,数仓怎样建设?
大数据·零售
大大大大晴天17 小时前
每天认识一个组件:Apache Pulsar
大数据
极限挑战哥17 小时前
共享电单车联营平台分账架构实践:二清合规与自动分账零人工方案
java·大数据·人工智能·微信小程序·架构·微信公众平台
QXWZ_IA17 小时前
公路边坡裂缝的自动化监测布设
大数据·人工智能·自动化
meiying883818 小时前
多快递公司快递单号批量查询接口怎么对接?Python 聚合查询实现
java·大数据·python
SelectDB18 小时前
Doris 异步物化视图实战:与 Snowflake MV / Dynamic Tables 分层建模对照
大数据·数据库·云原生