查询上下文和过滤上下文 {#query-filter-context}

查询子句的行为取决于它是在查询上下文中使用,还是在过滤上下文中使用:

查询上下文

一个查询子句在查询上下文中被使用时,能够解答这个文档和查询子句的匹配程度是怎样的?
除了决定文档是否匹配,还会计算一个评分,来代表与其他文档比起来,这个文档的匹配程度。

只要查询子句传入一个查询参数(例如 search
API 中的查询参数), 查询上下文就会生效。

过滤上下文

在过滤上下文中,一个查询子句是用来回答
``这个文档匹配这个查询子句吗?’’ 这种问题的,
这个答案是一个简单的 ‘是’ 或者 ‘不是’
,没有评分会被计算。过滤上下文大多的被用来过滤结构化的数据,
比如下面:

  • 这个时间戳是否在2015到2016区间内?

  • status 字段是否被设置为 “published” ?

频繁被使用的过滤上下文将会被 Elasticsearch 自动的缓存,以提升性能。

只要查询子句传入 filter 参数(例如 bool
查询中的 filter 参数或 must_not
参数,constant_score 查询中的
filter 参数,或者聚合中的
filter),
过滤上下文就会生效。

下面是一个 search API
中,查询子句被使用在查询上下文和过滤上下文中的例子。
这个查询会匹配满足下面所有条件的文档:

  • title 字段包含单词 search

  • content 字段包含单词 elasticsearch

  • status 字段包含完整的单词 published

  • publish_date 日期字段范围大于等于2015年1月1日。

GET /_search
{"query": { "bool": { "must": [{ "match": { "title":   "Search"        }}, { "match": { "content": "Elasticsearch" }}  ],"filter": [ { "term":  { "status": "published" }}, { "range": { "publish_date": { "gte": "2015-01-01" }}} ]}}
}
  • query 参数指明这是查询上下文。

  • bool 和两个 match
    子句被使用在查询上下文中,这意味着他们会被用来给每个文档的匹配程度计算评分。

  • filter 参数指明这是过滤上下文。

  • termrange
    子句被使用在过滤上下文中。它们将会过滤掉不满足它们条件的文档,但是它们不会影响文档的评分。

Tip

当关注影响匹配文档的评分(即,文档的匹配程度)的条件时,
使用查询上下文,其他情况使用过滤上下文。

elasticsearch6.6文档翻译-查询语句-查询上下文和过滤上下文相关推荐

  1. sqlserver 把两个sql查询语句查询出来的两张表合并成一张表

    第一个sql语句 select companyname gsmc,zb zhibiao from t_gsndzb left join t_companycode on t_gsndzb.gsbh=t ...

  2. mysql查询语句 查询方式

  3. mysql查询语句是什么意思_mysql子条件查询语句是什么意思?

    mysql中,在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery)语句,也称作子选择(subselect)或内嵌选择(inner select).子查询的结果传递给 ...

  4. 【笔记】SQL查询语句的基本使用方法

    SQL查询语句的基本使用方法 基本查询 SELECT查询语句 --查询所有的学生的学号和姓名 USE JXGL SELECT SNO,SNAME FROM S 简单查询 --查询所有的学生的姓名,学号 ...

  5. SQL中的查询语句总结(实例)

    首先我们使用MySQL创建两个表 – 创建人力资源管理系统数据库 drop database if exists hrs; create database hrs default charset ut ...

  6. DQL:数据库查询语句

    目录 ​ 一.常用DQL语句:数据库查询语句 1.最基本的通用查询:查询全表数据 2.查询指定列 3.通过起别名进行查询 1)对列起别名 AS可以省略 ​2)对表起别名(表的名字比较长),同时给列起别 ...

  7. MySQL精讲(一) |DQL数据查询语句全解析

    MySQL精讲系列文章(更新完毕) <MySQL入门必看知识> <MySQL精讲(一) | DQL数据查询语句全解析> <MySQL精讲(二) | DML数据操作语句全解 ...

  8. 「MySQL」- 复杂的SQL查询语句

    任意门 前言 聚合查询 1.聚合函数 count函数 sum函数 avg函数 max函数 min函数 2.分组查询 having子句 多表查询 1.笛卡尔积 2.内连接 3.外连接 左外连接 右外连接 ...

  9. oracle的show语句,Oracle查询语句应用经验总结

    51Testing软件测试网;M8eC&p;F3F [ 以下的主要是介绍查询语句的实际应用的经验总结,你如果对Oracle查询语句的实际应用感兴趣的话你就可以点击以下的文章进行观看了. 希望会 ...

最新文章

  1. 流畅的验证组件:FluentValidation
  2. 手机qpython3安装库_iPhone手机设置铃声简易教程(iOS12-iOS14)
  3. 数据访问函数库 for ado.net2.0
  4. SAP CRM Fiori应用Simulation pipeline里dualSlider的实现
  5. c 语言开发一个四则运算器,C++实现四则运算器(无括号)
  6. #苹果maccmsv10# redis memcached 缓存的若干问题解决
  7. physx选择显卡还是cpu_3D建模和渲染吃CPU还是显卡?专业显卡和游戏显卡的区别...
  8. Linux对I/O端口资源的管理(5)
  9. PADS 不同单位之间的切换
  10. opencms mysql_IDO分享 | 如何在centos下安装OpenCMS
  11. linux 命令 cups,linux cups 打印机命令说明
  12. CSS盒子坍塌(高度坍塌)(以及解决办法)
  13. Python Traceback (most recent call last)【StopIteration】
  14. 拯救智慧城市:要智商还有生气
  15. 三年上一大台阶,联想凌拓做对了什么?
  16. 机器学习与游戏,不只让AI玩星际争霸那么简单!
  17. Servlet处理GET和POST请求
  18. 数学建模清风微信公众号的习题答案(挑战篇-蒙特卡罗思想、枚举法和网格搜索法)
  19. 微信重磅更新,视频号狂放大招:直播连麦打赏美颜齐上线,新增巨大流量入口
  20. 金立生命倒计时:破产清算官网无法打开,创始人被曝赌博输十亿不知所踪

热门文章

  1. 悲壮!微软钦定的13部 Windows Phone 遗老
  2. java和数据库的应用_JAVA数据库应用的一个小例子
  3. kafka的基本概念和工作流程分析
  4. 去哪儿网2019秋招笔试题
  5. Ubuntu(WSL)安装3b1b的manim
  6. 大四实习已offer公司
  7. Kindle4RSS - 好用的Kindle RSS新闻文章推送服务
  8. Chrome 浏览器 原生工具进行网页长截图
  9. Matlab Robotic Toolbox安裝
  10. 程序员脱单秘籍丨带你用代码Kotlin看女性择偶标准