关于es中的filter

es的文档有说道,filter的速度要快于query,因为filter不需要执行评分,再加上使用了缓存,所以速度要快于query


于是进行相关的测试。

如:QueryString,Terms,Term等方式的Query和Filter方式的检索测试对比。

结果发现以上的测试方面,filter都不及query快。

疑惑了?不是说filter速度要快于query吗?难道官方文档写错了,不会吧,可是网上也n多人说filter的速度要快于query啊!


上面的疑惑困扰了很久,直到一个阳光明媚的日子,困惑终于解除了。


原来filter的快速,是要基于上一次检索的。

如:

先执行查询:

{
  "query" : {
    "terms" : {
      "creatorFullField" : [ "王玉平" ]
    }
  },
  "post_filter" : {
    "query" : {
      "query_string" : {
        "query" : "中国",
        "fields" : [ "_all" ],
        "default_operator" : "and"
      }
    }
  }
}

然后再执行查询:

{
  "query" : {
    "terms" : {
      "creatorFullField" : [ "王玉平" ]
    }
  },
  "post_filter" : {
    "bool" : {
      "must" : [ {
        "query" : {
          "query_string" : {
            "query" : "中国",
            "fields" : [ "_all" ],
            "default_operator" : "and"
          }
        }
      }, {
        "terms" : {
          "dateYear" : [ 2005 ]
        }
      } ]
    }
  }
}

这样,第二个查询就能很快的执行完毕。比同等方式的query要快100多倍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值