开发者学堂课程【ElasticSearch 入门精讲:并行过滤器】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/631/detail/10024
并行过滤器
内容简介:
一、简述 ES Rest _并行过滤器
二、代码演示
三、总结
一、简述 ES Rest _并行过滤器
(1)前言
文档中 score(_score字段是搜索结果)。score 是一个数字型的,是一种相对方法匹配查询文档结果。
分数越高,搜索关键字与该文档相关性越高;越低,搜索关键字与该文档相关性越低。在elasticsearch中所有的搜索都会触发相关性分数计算。
如果我们不使用相关性分数计算,那要使用另一种查询能力,构建过滤器。
(2)过滤器是类似于查询的概念,除了得以优化,更快的执行速度的两个主要原因:
1.过滤器不计算得分,所以他们比执行查询的速度
2.过滤器可缓存在内存中,允许重复搜索
二、代码演示
为了使手提炼过滤器,先介绍过滤溶液A(Ne=mol/advanced _b00d-booted-记入与其他的含溢透物混杂s(记含一个过滤器、100g的pH)变一般用于数字或日期过滤使用过滤器搜索返回balances(20000, 3000),
换句话说,
balance)=20000&balance<=30000.
curl -XPOST 'localhost:9200/bank/_ search? pretty' -d
’{
query”:{
"filtered":{
"query":{"match _ all":{}},
"filter":{
"range":{
"balance":{
“gte”:20000,
"Ite":30000
上述代码运行的结果为;
代码运行:
{
“query”:{
"filtered":{
"query":{"match _ all":{}},
}
运行结果:
注意:
elasticsearch 旧版本 flitered 替换。从 es 的5.0版本开始,原先的 filtered 逼包,类似 GET_search
{
“query”:{
“filtered”:{
“query”:{
“match”:{
“text”:“quick brown fox"
}
},
“filter”:[
“term”:{
“status”:”published”
}
被淘汰,对应的替换语法是
GET_search
{
“query”:{
“bool”:{
“must”:{
“match”:{
“text”:“quick brown fox"
}
},
“filter”:[
“term”:{
“status”:”published”
}
运行以下代码得到结果:
{
“query”:{
"bool":{
"query":{"match _ all":{}},
"filter":{
"range":{
"balance":{
“gte”:20000,
"Ite":30000
}
注意,bool 中不支持 query 类型,所以要将 query 换成 must
代码变换成:
{
“query”:{
"bool":{
"must":{"match _ all":{}},
"filter":{
"range":{
"balance":{
“gte”:20000,
"Ite":30000
}
得到运行结果如下:
三、总结
过滤查询包含 match_all 查询(查询部分)和一系列过滤(过滤部分)。可以代替任何其他查询到查询部分以及其他过滤器过滤部分。在上述情况下,过滤器范围智能,因为文档落入 range 所有匹配“平等”,级比另一个更相关,没有文档。
一般情况,最明智的方式决定是否使用 flier or querry,就看你是否关心相关性分数。如果相关性不重要,那就使用filter,否则就使用query。
queries and filters 很类似于关系型数据库中的“ SELECT WHERE clause ”