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语法对应的功能。

  • 相关阅读:
    MySQL 入门教程
    .net 定时服务
    【搜索面板】规格信息单选
    【搜索面板查询】品牌单选(term过滤查询)
    【搜索框查询】搜索功能+搜索框内容回显
    商品上下架(发布订阅模式)
    Canal广告缓存实现(工作队列模式)
    FastDFS分布式文件系统(适合存储小文件 )
    跨域(浏览器限制本行为)
    购物网站项目
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8482819.html
Copyright © 2011-2022 走看看