4.bool组合查询

主要知识:

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

1、搜索发帖日期为2017-01-01,或者帖子ID为XHDK-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、搜索帖子ID为XHDK-A-1293-#fJ3,或者是帖子ID为JODL-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、总结:

(1)bool可以must,must_not,should,组合多个过滤条件进行查询

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

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

原文地址:https://www.cnblogs.com/liuqianli/p/8482819.html

时间: 2024-11-04 23:12:30

4.bool组合查询的相关文章

四十五 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询

bool查询说明 filter:[],字段的过滤,不参与打分must:[],如果有多个查询,都必须满足[并且]should:[],如果有多个查询,满足一个或者多个都匹配[或者]must_not:[],相反查询词一个都不满足的就匹配[取反,非] # bool查询 # 老版本的filtered已经被bool替换 #用 bool 包括 must should must_not filter 来完成 #格式如下: #bool:{ # "filter":[], 字段的过滤,不参与打分 # &qu

51.多条件组合查询

主要知识点: bool组合查询 bool和filter组合查询 bool,filter嵌套查询 直接用filter查询,并以_score排序 一.bool组合查询 GET /website/article/_search { "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } } ], "

Elasticsearch判断多列存在、bool条件组合查询示例

and符号判断多列存在:{   "filter": {     "and": [       {         "exists": {           "field": "sid"         }       },       {         "exists": {           "field": "level"        

组合查询功能实现

前言 这是我的第二篇文章,这是我之前做的ERP项目的时候设计实现的.在这个ERP系统中,功能比较多,表设计的时候建立了很多业务表.对于一些业务表需要执行很多查询,客户要求针对不同的字段进行查询,基于我们之前的设计,针对不同的查询条件设计不同的DAL方法,通过不同的方法签名来实现客户的对于不同条件查询的要求.但是这种解决方案会让程序员很被动,久而久之整个DAL层会显得很臃肿. 面对这样的困境,考虑是否可以实现用一个通用的DAL方法来代替所有的不同筛选条件查询方法,因为这些查询方法内部的逻辑是一样的

ElasticSearch search api的基础语法+Query DSL搜索+filter与query对比+组合查询+定位不合法的搜索

一. search api的基础语法 1.search语法 GET /search{} GET /index1,index2/type1,type2/search{} GET /_search{ "from": 0, "size": 10} 2.http协议中get是否可以带上request body HTTP协议,一般不允许get请求带上request body,但是因为get更加适合描述查询数据的操作,因此还是这么用了 GET /_search?from=0&a

webform:分页组合查询

一个简单的分页组合查询页面 /// <summary> /// 查询方法 /// </summary> /// <param name="tsql">SQL语句</param> /// <param name="hh">哈希表</param> /// <returns></returns> public List<Goods> Select(string un

WebForm 分页与组合查询

1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> list = new List<Subject>(); cmd.CommandText = "select *from Subject where SubjectName like @a "; cmd.Parameters.Clear(); cmd.Parameters.Add

ADO.NET组合查询及其分页合并

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&quo

webform(八)组合查询

组合查询就是根据条件取出某些数据并展示出来. 前台代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>组合查询</title> &l