zoukankan      html  css  js  c++  java
  • es中filter和query的对比

    1、filter与query示例
    PUT /company/employee/2
    {
      "address": {
        "country": "china",
        "province": "jiangsu",
        "city": "nanjing"
      },
      "name": "tom",
      "age": 30,
      "join_date": "2016-01-01"
    }

    PUT /company/employee/3
    {
      "address": {
        "country": "china",
        "province": "shanxi",
        "city": "xian"
      },
      "name": "marry",
      "age": 35,
      "join_date": "2015-01-01"
    }

    搜索请求:年龄必须大于等于30,同时join_date必须是2016-01-01
    GET /company/employee/_search
    {
      "query": {
      "bool": {
        "must": [{
          "match": {
            "join_date": "2016-01-01"
            }
          }
        ],
        "filter": {
          "range": {
            "age": {
              "gte": 30
              }
            }
          }
        }
      }
    }

    2、filter与query对比大解密
    filter,仅仅只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,对相关度没有任何影响。
    query,会计算每个document相对于搜索条件的相关度,并按照相关度进行排序。
    一般来说,如果你是在进行搜索,需要将最匹配搜索条件的数据先返回,那么用query;如果你只是要根据一些条件筛选出一部分数据,不关注排序,那么使用filter。

    3、filter和query性能对比
    filter,不需要计算相关度分数,不需要按照相关度分数进行排序,同时还有内置的机制,自动cache最常使用filter的数据。
    query,相反,要计算相关度分数,按照分数进行排序,而且无法cache结果。

  • 相关阅读:
    四 HBase 客户端设置缓存优化查询。
    三 Client 如何找到正确的 Region Server
    二 HTable 源码导读
    一 Balancer regionCountCost 权重。
    @zookeeper
    HDFS 断点续传,写文件功能
    我所理解的大数据个性化推荐
    Strom 简介,ppt
    多线程(守护线程、join方法、线程优先级、线程组)
    多线程(停止线程)
  • 原文地址:https://www.cnblogs.com/qinjf/p/8530968.html
Copyright © 2011-2022 走看看