Filter查询

  • filter是不计算相关性的,同时可以cache,因此,filter速度要块于query

  • 数据准备

    POST /lib3/user/_bulk
    {"index":{"_id":1}}
    {"price":40,"itemID":"ID100123"}
    {"index":{"_id":2}}
    {"price":50,"itemID":"ID100124"}
    {"index":{"_id":3}}
    {"price":25,"itemID":"ID100125"}
    {"index":{"_id":4}}
    {"price":30,"itemID":"ID100126"}
    {"index":{"_id":5}}
    {"price":null,"itemID":"ID100127"}
    # 查看mapping
    GET /lib3/_mapping
    {
     "lib3": {
       "mappings": {
         "user": {
           "properties": {
             "itemID": {
               "type": "text",
               "fields": {
                 "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
              }
            },
             "price": {
               "type": "long"
            }
          }
        }
      }
    }
    }
  • 查询

    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "filter": {
           "term": {
             "price": 40
          }
        }
      }
    }
    }
    # 查询多个值
    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "filter": {
           "terms": {
             "price": [25,40]
          }
        }
      }
    }
    }
    # 查询不出来,因为itemID text类型并且进行了倒排索引,分词后转为小写存储
    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "filter": {
           "term": {
             "itemID": "ID100124"
          }
        }
      }
    }
    }
    # 改为小写
    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "filter": {
           "term": {
             "itemID": "id100124"
          }
        }
      }
    }
    }
    # 查询结果
    {
     "took": 3,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 1,
       "max_score": 0,
       "hits": [
        {
           "_index": "lib3",
           "_type": "user",
           "_id": "2",
           "_score": 0,
           "_source": {
             "price": 50,
             "itemID": "ID100124"
          }
        }
      ]
    }
    }

bool过滤查询

  • 可以实现组合过滤查询

  • 格式

    {
       "bool":{"must":[],"should":[],"must_not":[]}
    }
    • must:必须满足的条件 --and

    • should:可以满足也可以不满足的条件 --or

    • must_not:不需要满足的条件 --not

    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "should": [
          {"term": {"price": 25}},
          {"term": {"itemID": "id100123"}}
        ]
        , "must_not": [
          {"term": {
             "price": 40
          }}
        ]
      }
    }
    }
    # 还可以嵌套
    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "should": [
          { "term": {"price": 25}},
          {
             "bool": {
               "must": [
                {"term":{"itemID":"id100123"}},
                {"term":{"price":40}}
              ]
            }
          }
        ]
      }
    }
    }

范围过滤

  • gt: >

  • lt: <

  • gte: >=

  • lte: <=

    # 范围过滤
    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "filter": {
           "range": {
             "price": {
               "gt": 25,
               "lt": 50
            }
          }
        }
      }
    }
    }
    # 非空过滤
    GET /lib3/user/_search
    {
     "query": {
       "bool": {
         "filter": {
           "exists": {
             "field": "price"
          }
        }
      }
    }
    }

Filter查询的更多相关文章

  1. Lucene6去掉了Filter但是可以用BooleanQuery实现Filter查询

    Lucene在6.0版本之后彻底废除了Filter的使用,采用BooleanQuery来实现Filter的功能,核心代码如下: TermQuery termQuery = new TermQuery( ...

  2. Django的filter查询

    Django的filter查询 name__contains表示精确大小写的模糊查询 使用name__icontains表示忽略大小写 year_count = DownloadFile.object ...

  3. Elasticsearch(5) --- Query查询和Filter查询

    Elasticsearch(5) --- Query查询和Filter查询 这篇博客主要分为 :Query查询和Filter查询.有关复合查询.聚合查询也会单独写篇博客. 一.概念 1.概念 一个查询 ...

  4. HBase中多Filter查询示例

    在Hbase查询中有时需要用到多个Filter关联的查询. 代码如下: ArrayList<Filter> listForFilters = new ArrayList<Filter ...

  5. EXTJS4扩展实例:如何使用filter查询treepanel

    我们在使用普通的store时,extjs提供了filterBy,filter等多种方法来过滤数据达到查询效果,但在treepanel中的streeStore却没有实现这个查询,于是,就有了这篇文章. ...

  6. Django object filter查询[转]

    用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains='keywords').... 在这种情况下,如果你跟踪 ...

  7. Dynamics 365 Web Api之基于single-valued navigation property的filter查询

    本篇要讲的是dynamics 新版本中web api的一个改进功能,虽然改进的很有限,但至少是改进了. 举个例子,我们现在知道联系人的名字vic,我们想找出客户记录中主要联系人名字为vic的所有客户, ...

  8. LDAP的filter查询详解

    转: 等于(EQUAL TO):  =大于等于(Greater than):  >=小于等于(Less than):  <=通配符(wildcard):  *  逻辑运算符:逻辑与(log ...

  9. 【转】elasticsearch的查询器query与过滤器filter的区别

    很多刚学elasticsearch的人对于查询方面很是苦恼,说实话es的查询语法真心不简单-  当然你如果入门之后,会发现elasticsearch的rest api设计是多么有意思. 说正题,ela ...

随机推荐

  1. JS-事件心得

    写在前面的话:就我目前的水平来看,这两种方法不能一起使用,用on添加的事件removeEventListener()没办法删除,反之一样 注册事件的两种方式: on+事件名称 addEventList ...

  2. (转)ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 方法

    ScriptManager.RegisterStartupScript方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStartu ...

  3. PAT 1056 组合数的和(15)(代码)

    1056 组合数的和(15 分) 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出: ...

  4. UVALive - 3266 (贪心) 田忌赛马

    耳熟能详的故事,田忌赛马,第一行给出田忌的马的速度,第二行是齐王的马的速度,田忌赢一场得200,输一场失去200,平局不得也不失,问最后田忌最多能得多少钱? 都知道在故事里,田忌用下等马对上等马,中等 ...

  5. MSI-X 之有别于MSI

    转自: https://www.cnblogs.com/helloworldspace/p/6760718.html MSI-X Capability结构 MSI-X Capability中断机制与M ...

  6. swift 总结

    结构体(struct)属于值类型, 当值类型的实例被声明为常量的时候,它的所有属性也就成了常量. 属于引用类型的类(class)则不一样.把一个引用类型的实例赋给一个常量后,仍然可以修改该实例的变量属 ...

  7. optimizer_switch引起的诡异问题

    参数描述 MySQL中不同的版本优化器会有很多新特性,比如MRR.BKA等,optimizer_switch这个参数就是控制查询优化器怎样使用这些特性.很多情况下我们会根据自身的需求去设置optimi ...

  8. linux_磁盘挂载

    mount -o loop 磁盘的位置 想要挂载的位置 磁盘卸载 umont 挂载的磁盘的详细位置 注意:磁盘卸载时你当前所在的路径不要在磁盘挂载的路径,应该其他与磁盘挂载路径不相干的路径下即可

  9. 【转】Linux useradd

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  10. 如何查看Python内置模块的实现代码

    方法1:使用help(random) >>> import random >>> help(random) Help on module random: NAME ...