zoukankan      html  css  js  c++  java
  • 4.bool组合查询

    主要知识:

    • 学习bool组合查询
    • bool嵌套

       

    1、搜索发帖日期为2017-01-01,或者帖子IDXHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02

    sql语句:select * from forum.article where (post_date='2017-01-01' or article_id='XHDK-A-1293-#fJ3') and post_date!='2017-01-02'

    es 查询:

    GET /forum/article/_search

    {

    "query": {

    "constant_score": {

    "filter": {

    "bool": {

    "should":[{"term":{"postDate":"2017-01-01"}},

    {"term":{"articleID":"XHDK-A-1293-#fJ3"}}],

    "must_not":[{"term":{"postDate":"2017-01-02"}}]

    }

    }

    }

    }

    }

       

    must:必须全部匹配,should:可以匹配其中任意一个即可,must_not:必须全部不匹配,filter:过虑。当查询条件是一个是可以用字典,查询条件是多个时要用列表.

    2、搜索帖子IDXHDK-A-1293-#fJ3,或者是帖子IDJODL-X-1937-#pV7而且发帖日期为2017-01-01的帖子。

    sql 语句:

    select * from forum.article where article_id='XHDK-A-1293-#fJ3'

    or (article_id='JODL-X-1937-#pV7' and post_date='2017-01-01')

    es 查询:

    GET /forum/article/_search

    {

    "query": {

    "constant_score": {

    "filter": {

    "bool": {

    "should":[{"term":{"articleID":"XHDK-A-1293-#fJ3"}},

    {"bool": {

    "must":[{"term":{"articleID": "JODL-X-1937-#pV7"}},

    {"term":{"postDate": "2017-01-01"}}] }}

    ]

    }

    }

    }

    }

    }

    3、总结:

    1bool可以mustmust_notshould,组合多个过滤条件进行查询

    2bool可以嵌套bool,组合成多层bool

    3bool查询相当于SQL中的多个and条件:当你把搜索语法学好了以后,基本可以实现部分常用的sql语法对应的功能。

  • 相关阅读:
    TOMCAT清理
    tomcat 热部署、热加载 精析
    TOMCAT配置数据库连接池
    TOMCAT修改端口号
    TOMCAT配置管理员
    Go语言net/http 解读.
    《coredump问题原理探究》Linux x86版7.7节 set对象
    Asp.net与office web apps的整合
    【设计模式】代理模式实现连接池
    手把手实现Java权限(1)-Shiro介绍
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8482819.html
Copyright © 2011-2022 走看看