IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> elasticsearch系统学习笔记4-bool查询 -> 正文阅读

[大数据]elasticsearch系统学习笔记4-bool查询

布尔查询

在 SQL 中,我们需要and , or 和括号来组合查询条件,在 ES 中使用 bool 查询可用做到同样的效果;

布尔查询对应 Lucene 的 BooleanQuery ;基于一个或多个布尔子句的使用,每个自居都有一类事件:

  • must — 必须出现在匹配文档中,并且会影响匹配得分;
  • filter — 必须出现在匹配文档中,不计算匹配得分(所以效率高于 must);
  • should — 应该出现在匹配文档中;
    • 在当前布尔查询中,如果没有 must 或 filter 子句,文档则最少匹配一个 should 子句;
    • 如果有 must 或 filter 子句,文档则可以不匹配的任意一个 should 子句,当然匹配 should 子句会提高得分(待定);
    • 应该匹配的 should 子句的最小数量可以通过 minimum_should_match 参数进行设置;
  • must_not — 必须不出现在匹配文档中;

bool 语法结构

GET /{索引名}/_search
{
  "query": {
    "bool": { // bool查询
      "must": [], // must条件,类似SQL中的and, 代表必须匹配条件
      "must_not": [], // must_not条件,跟must相反,必须不匹配条件
      "should": [],  // should条件,类似SQL中or, 代表匹配其中一个条件
      "filter": [] // 不计算得分
    }
  }
}

must

GET /order_v2/_search
{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "order_no": "202003131209120999"
                    }
                },
                {
                    "term": {
                        "shop_id": 123
                    }
                }
            ]
        }
    }
}

select * from order_v2 where order_no = “202003131209120999” and shop_id = 123

must_not

GET /order_v2/_search
{
    "query": {
        "bool": {
            "must_not": [
                {
                    "term": {
                        "shop_id": 1
                    }
                },
                {
                    "term": {
                        "shop_id": 2
                    }
                }
            ]
        }
    }
}

select * from order_v2 where shop_id != 1 and shop_id != 2

should

GET /order_v2/_search{
    "query": {
        "bool": {
            "should": [
                {
                    "term": {
                        "order_no": "001"
                    }
                },
                {
                    "term": {
                        "order_no": "002"
                    }
                }
            ]
        }
    }
}

select * from order_v2 where order_no = “001” or order_no = “002”


GET /order_v2/_search
{
    "query": {
        "bool": {
            "should": [
                {
                    "bool": {
                        "must": [
                            {
                                "term": {
                                    "order_no": "003"
                                }
                            },
                            {
                                "term": {
                                    "shop_id": 333
                                }
                            }
                        ]
                    }
                },
                {
                    "terms": {
                        "tag": [
                            1,
                            2
                        ]
                    }
                }
            ]
        }
    }
}

select * from order_v2 where (order_no = ‘003’ and shop_id = 333) or tag in (1,2)

minimum_should_match

GET /order_v2/_search
{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "shop_id": 20220101
                    }
                }
            ],
            "should": [
                {
                    "term": {
                        "order_no": "001"
                    }
                },
                {
                    "term": {
                        "order_no": "002"
                    }
                }
            ],
            "minimum_should_match" : 1,
            "boost" : 1.0
        }
    }
}

提示:

match_phrase

要做到这个,我们只要将 match 查询变更为 match_phrase 查询即可:

GET /megacorp/employee/_search
{
    "query": {
        "match_phrase": {
            "about": "rock climbing"
        }
    }
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:06:05  更:2022-02-04 11:08:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:08:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码