内容简介:搜索请求:年龄必须大于等于30,同时join_date必须是2016-01-01filter:仅仅只是按照搜索条件过滤出需要的数据而已,比计算任何相关度分数,对相关度没有任何影响一般来说,如果是在进行搜索,需要将最匹配搜索条件的数据先返回,那么用query。如果只是要根据一些条件筛选出一部分数据,不关注其排序,那么用filter。
filter和query示例
PUT /employee/_doc/1 { "address": { "country": "china", "province": "jiangsu", "city": "nanjing" }, "name": "tom", "age": 30, "join_date": "2016-01-01" } PUT /employee/_doc/2 { "address": { "country": "china", "province": "shanxi", "city": "xian" }, "name": "marry", "age": 35, "join_date": "2015-01-01" }
搜索请求:年龄必须大于等于30,同时join_date必须是2016-01-01
GET /employee/_search { "query": { "bool": { "must": [ { "match": { "join_date": "2016-01-01" } } ], "filter": { "range": { "age": { "gte": 30 } } } } } } { "took" : 141, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "employee", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "address" : { "country" : "china", "province" : "jiangsu", "city" : "nanjing" }, "name" : "tom", "age" : 30, "join_date" : "2016-01-01" } } ] } }
filter与query对比大揭秘
filter:仅仅只是按照搜索条件过滤出需要的数据而已,比计算任何相关度分数,对相关度没有任何影响
query: 会计算每个document相对于搜索条件的相关度,并按照相关度进行排序
一般来说,如果是在进行搜索,需要将最匹配搜索条件的数据先返回,那么用query。如果只是要根据一些条件筛选出一部分数据,不关注其排序,那么用filter。
filter与query性能对比
filter: 不需要计算相关度分数,不需要按照相关度分数进行排序,同时还有内置的自动缓存cache,会缓存住最常使用的filter数据
query: 需要计算相关度分数,并按照相关度分数进行排序,无法缓存结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【每日笔记】【Go学习笔记】2019-01-04 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-02 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-07 Codis笔记
- Golang学习笔记-调度器学习
- Vue学习笔记(二)------axios学习
- 算法/NLP/深度学习/机器学习面试笔记
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。