主要知识点

1、filter与query用在同一次查询中的语法

2、filter与query使用场景对比

3、二都的性能比较

 
 

一、filter与query示例

1、先准备数据

PUT /company/employee/1

{

"address": {

"country": "china",

"province": "guangdong",

"city": "guangzhou"

},

"name": "jack",

"age": 27,

"join_date": "2017-01-01"

}

PUT /company/employee/2

{

"address":{

"conutry":"china",

"province":"shichuan",

"city":"chendu"

},

"name":"tom",

"age":32,

"join_date":"2017-01-01"

}

 
 

PUT /company/employee/3

{

"address":{

"conutry":"china",

"province":"shichuan",

"city":"wenjiang"

},

"name":"lili",

"age":27,

"join_date":"2016-01-01"

}

 
 

、搜索请求:

年龄必须大于等于30,同时join_date必须是2017-01-01

 
 

3、书写搜索语句:

GET /company/employee/_search

{

"query": {

"bool": {

"must": [

{"match": {

"join_date": "2017-01-01"

}}

],

"filter": {

"range": {

"age": {

"gt": 30

}

}

}

}

}

}

执行结果:

{

"took": 40,

"timed_out": false,

"_shards": {

"total": 5,

"successful": 5,

"failed": 0

},

"hits": {

"total": 1,

"max_score": 1,

"hits": [

{

"_index": "company",

"_type": "employee",

"_id": "2",

"_score": 1,

"_source": {

"address": {

"conutry": "china",

"province": "shichuan",

"city": "chendu"

},

"name": "tom",

"age": 32,

"join_date": "2017-01-01"

}

}

]

}

}

二、filter与query使用场景对比

 
 

1、filter,仅仅只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,搜索结果的相关度对filter手结果没有任何影响,query,会去计算每个document相对于搜索条件的相关度,并按照相关度进行排序。

2、一般来说,如果在进行搜索时,需要将最匹配搜索条件的数据先返回(对相关度有要求),那么用query;如果只是要根据一些条件筛选出一部分数据,不关注其排序,那么用filter。

3、在实际使用过程中,一般是querry和filter结合使用,先用query搜索出数据并按相关度返回,用filter进行过渡,对于一部分搜索条件,希望越符合这些搜索条件的document越排在前面返回,那么这些搜索条件要放在query中;对于另一部分搜索条件,如果不希望这些搜索条件来影响document排序,那么就放在filter中。

 
 

三、filter与query性能对比

1、filter,不需要计算相关度分数,不需要按照相关度分数进行排序,同时还有内置的自动cache最常使用filter的数据的方法,性能较query高

2、query,相反,要计算相关度分数,按照分数进行排序,而且无法cache结果,性能较低。

49.filter、query比较的更多相关文章

  1. 以bank account 数据为例,认识elasticsearch query 和 filter

    Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...

  2. Elasticsearch学习笔记(十二)filter与query

    一.keyword 字段和keyword数据类型    1.测试准备数据 POST /forum/article/_bulk { "index": { "_id" ...

  3. Elasticsearch系列(二)--query、filter、aggregations

    本文基于ES6.4版本,我也是出于学习阶段,对学习内容做个记录,如果文中有错误,请指出. 实验数据: index:book type:novel mappings: { "mappings& ...

  4. Elasticsearch查询——布尔查询Bool Query

    Elasticsearch在2.x版本的时候把filter查询给摘掉了,因此在query dsl里面已经找不到filter query了.其实es并没有完全抛弃filter query,而是它的设计与 ...

  5. AngularJS学习--- AngularJS中的模板template和迭代器过滤filter step2 step3

    1.AngularJS 模板---step2: mvc(Model-View-Controller)模式在后端用的比较多,在前端也是一样的常用; 在AngularJS中,一个视图是模型通过HTML模板 ...

  6. 1.7.4 Query Syntax and Parsing

    1. 查询语法和解析 这部分主要说明了如何指定被使用的查询解析器.同样描述了主查询解析器的支持的语法和功能.同时还描述了在特定环境下使用的其他查询解析器.这里有一些普通查询解析器都能使用的参数,将会在 ...

  7. lucene Filter过滤器

    摘自:http://iamyida.iteye.com/blog/2199368 1.TermFilter:就是按照Term去过滤,跟TermQuery类似: Filter filter = new ...

  8. Elasticsearch结构化搜索_在案例中实战使用term filter来搜索数据

    1.根据用户ID.是否隐藏.帖子ID.发帖日期来搜索帖子 (1)插入一些测试帖子数据 POST /forum/article/_bulk { "index": { "_i ...

  9. HQL: The Hibernate Query Language

    Chapter 14. HQL: The Hibernate Query Language 14.1. Case Sensitivity 14.2. The from clause 14.3. Ass ...

随机推荐

  1. (转)linux口令相关文件(/etc/passwd和/etc/shadow)

    在linux中,口令文件在/etc/passwd中,早期的这个文件直接存放加密后的password,前两位是"盐"值,是一个随机数.后面跟的是加密的password.为了安全,如今 ...

  2. 【JavaScript】离开页面前提示

    离开页面前的提示不能够用onunload去做,由于它仅仅是兼容IE,你要兼容Google与FireFox就蛋疼了. 并且这个事件还是关闭之后才会触发的. 取而代之能够用onbeforeunload去实 ...

  3. 瀑布流 ajax 预载入 json

    pbl.json[模拟后台json数据]: [     {         "id": "511895",         "title": ...

  4. Java 递归、尾递归、非递归、栈 处理 三角数问题

    import java.io.BufferedReader; import java.io.InputStreamReader; //1,3,6,10,15...n 三角数 /* * # 1 * ## ...

  5. linux下启动jekins报错

    进入默认安装目录,执行java -jar jekins.war 启动使用端口号: java -jar jenkins.war --httpPort=8085,即启动完成 这个有个弊端,关闭后下次还得这 ...

  6. Java 8 实战 P1 Fundamentals

    目录 Chapter 1. Java 8: why should you care? Chapter 2. Passing code with behavior parameterization Ch ...

  7. Python27天 反射 ,isinstance与ssubclass 内置方法

    所学内容 反射 1.hasattr ( 判断一个属性在对象里有没有 ) -------------------- [对象,字符串属性]本质是:# 判断 ' name ' in obj.__dict__ ...

  8. oracle 创建命令

    环境变量设置(在Sqlplus中执行) create or replace directory filepath as 'D:\ORACLEBACKUP'; 备份脚本:expdp system/123 ...

  9. BZOJ 1511 KMP

    题意:求出每个前缀的最长周期之和(等于本身的算0) 思路: 求出来next数组  建出next树 找到不为0的最小的 n减去它就是答案 //By SiriusRen #include <cstd ...

  10. 初学jQuery之jQuery虚假购物车-------与真实数据无关

    初学者用jquery来写仿真的购物车,确实有点恶心,那我们今天就把这万恶的购物车剖析一下,来看看到底有什么难的. 购物车的效果图 那我们先从复选框开始吧,废话不多说,上代码!! 带有序号的,都是一些分 ...