主要知识点

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. 配置JBOSS多实例

    在使用Jbossserver时.非常多情况我们须要配置多个实例,以下为大家介绍JBoss里怎样配置多实例,以Jboss5.1为例介绍. 1.复制${JBOSS_HOME}\server\default ...

  2. hdu1542 线段树+扫描线+离散化

    仅仅想说题目给的欲实际不服     还是这类型的水题吧   建议看之前我写的那个 #include<stdio.h> #include<string.h> #include&l ...

  3. mac下安装tensorflow及入门例子

    https://www.tensorflow.org/install/install_mac 使用virtualenv安装,virtualenv相当于使tensorflow运行在虚拟机环境下. 需要使 ...

  4. React Native - 认识与环境搭建

    01 传统开发的痛点 1.人员稀缺 2.开发成本高 3.代码复用率低 4.无法动态更新 02 React Native的优点 1.跨平台 2.性能高 3.低投入 4.支持动态更新 03 开发环境搭建 ...

  5. Android+Jquery Mobile学习系列(5)-SQLite数据库

    SQLite是轻量级的.嵌入式的.关系型数据库,目前已经在iPhone.Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠. 因为Android已经集成了SQLit ...

  6. poj1041 John's trip——字典序欧拉回路

    题目:http://poj.org/problem?id=1041 求字典序欧拉回路: 首先,如果图是欧拉图,就一定存在欧拉回路,直接 dfs 即可,不用 return 判断什么的,否则TLE... ...

  7. bzoj2595 [Wc2008]游览计划——斯坦纳树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2595 今天刚学了斯坦纳树,还不太会,写一道题练习一下: 参考了博客:http://www.c ...

  8. 99.ext afteredit事件详解

    转自:http://www.jcodecraeer.com/a/jquery_js_ajaxjishu/2012/0524/203.html 1 摘要 grid.on(afteredit,afterE ...

  9. 理解了这些词句涵义用法等,你就熟练ES6了。

    let const 块级作用于 暂时性死区 解构赋值:变量的解构赋值.对象的解构赋值.字符串的解构赋值.数值和布尔值的解构赋值. String的扩展 正则表达式的扩展 Number的扩展 Array的 ...

  10. python 46 css组合选择器 及优先级 、属性选择器

    一:css组合选择器 特性:每个选择器位可以为任意基本选择器或选择器组合 选择器分为以下几类: 群组选择器,子代(后代)选择器,相邻(兄弟)选择器,交集选择器,多类名选择器 1.群组选择器:    d ...