码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Elasticsearch的高级查询


    目录

    一、条件查询

    1、单条件

    1)路由查询

     2)body体查询

    2、多条件查询

    1)and---must

     2)or---should

    3)范围---filter

    3、全文检索、完全匹配、高亮显示

     二、聚合查询

    1、分组

    2、求平均值


    一、条件查询

    1、单条件

    1)路由查询

    方法:get

    url :http://localhost:9200/wenzhang/_search?q=name:蜡笔

    介绍:q后面跟的是字段名,冒号后面是要搜索的关键字 

     2)body体查询

    方法:get

    url:http://localhost:9200/wenzhang/_search

    {"query":{"match":{"name":"蜡笔"}}}

     全量查询:

    {"query":{"match_all":{}}}

    分页查询:

    1. {"query":
    2. {
    3. "match_all":{
    4. }
    5. },
    6. "from":0,
    7. "size":3
    8. }

    from:游标起始位 size:查询量

    控制显示字段:

    1. {"query":
    2. {
    3. "match_all":{
    4. }
    5. },
    6. "from":0,
    7. "size":3,
    8. "_source" : ["name"]
    9. }

    排序:

    1. {"query":
    2. {
    3. "match_all":{}
    4. },
    5. "from":0,
    6. "size":3,
    7. "sort":{
    8. "age":{
    9. "order" : "desc"
    10. }
    11. }
    12. }

    2、多条件查询

    方法:get

    url:http://localhost:9200/wenzhang/_search

    1)and---must

    1. {
    2. "query":{
    3. "bool":{
    4. "must":[
    5. {
    6. "match":{
    7. "name":"蜡笔"
    8. }
    9. },
    10. {
    11. "match":{
    12. "age":6
    13. }
    14. }
    15. ]
    16. }
    17. }
    18. }

     2)or---should

    1. {
    2. "query":{
    3. "bool":{
    4. "should":[
    5. {
    6. "match":{
    7. "name":"蜡笔"
    8. }
    9. },
    10. {
    11. "match":{
    12. "name":"海绵宝宝"
    13. }
    14. }
    15. ]
    16. }
    17. }
    18. }

    这样海绵宝宝和蜡笔小新都被查出来了

    3)范围---filter

    1. {
    2. "query":{
    3. "bool":{
    4. "must":[
    5. {
    6. "match":{
    7. "name":"蜡笔"
    8. }
    9. }
    10. ],
    11. "filter" : {
    12. "range" : {
    13. "age":{
    14. "gt":5
    15. }
    16. }
    17. }
    18. }
    19. }
    20. }

    这个时候搜索的就是大于5岁的蜡笔小新,如果把上面的must改成should,那会把8岁的海绵宝宝也搜出来,可见should也作用到了filter上。

    3、全文检索、完全匹配、高亮显示

    全文检索:match,上面我们查询都是用的这个关键字,但是有个特点,name字段写"蜡笔"和"蜡小笔"都能匹配到数据,原因是es在底层做了拆词,把每个字做了倒排索引,当我们查询的时候会把每个字都拆开全文检索匹配,这样就返回了所有数据。

    这不是我们想要的结果,我们就想要蜡笔小新怎么办。有办法,完全匹配。

    完全匹配:match_phrase,这样匹配到的都是以我们输入的name里的关键字做的匹配。

    高亮显示:highlight,查询过程加入此关键字就可以把匹配到的值高亮显示。

    1. {
    2. "query":{
    3. "bool":{
    4. "must":[
    5. {
    6. "match_phrase":{
    7. "name":"蜡笔"
    8. }
    9. }
    10. ]
    11. }
    12. },
    13. "highlight":{
    14. "fields" : {
    15. "name":{}
    16. }
    17. }
    18. }

     二、聚合查询

    方法:get

    url:http://localhost:9200/wenzhang/_search

    1、分组

    1. {
    2. "aggs" : {
    3. "age_group" : {
    4. "terms" : {
    5. "field" : "age"
    6. }
    7. }
    8. },
    9. "size" : 0
    10. }

    aggs:聚合操作

    age_group:自定义聚合名称

    terms:聚合的具体操作,terms代表分组

    size:查询结果不显示原始数据

    2、求平均值

    1. {
    2. "aggs" : {
    3. "age_avg" : {
    4. "avg" : {
    5. "field" : "age"
    6. }
    7. }
    8. },
    9. "size" : 0
    10. }

    avg:平均聚合操作

  • 相关阅读:
    计算机毕业设计ssm宠物商店信息展示与服务订购系统7q5ic系统+程序+源码+lw+远程部署
    卡巴斯基8(2009)杀毒软件
    【每日一题】ABC194E-Mex Min | 思维 | 树状数组二分 | 中等
    AAA企业信用怎么办理
    cpu与指令集
    如何快速搭建自己的查题公众号教程
    vue中的网络请求
    Kubernetes那点事儿——集群搭建1.22(kubeadm部署)
    java毕业设计基于精细化考核的离散数学课程教学目标达成系统Mybatis+系统+数据库+调试部署
    解决json_decode解析返回null空值
  • 原文地址:https://blog.csdn.net/u014225032/article/details/128202295
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号