文章目录

  • 1. es单个条件查询和组合查询
  • 2.query和filter context
    • 1. query context
    • 2. filter context
  • 3.使用样例

1. es单个条件查询和组合查询

es的query DSL(Domain Specific Language),都是json格式,一般分为两大类

1.单个条件查询
这种一般是针对index中的某一个field进行个别value的查询,比如 mathc,term,range 查询等等。这些查询一般可以独立使用。

2.组合查询
这种查询一般是将单个条件的查询组合起来,只是起到组合的作用,比如bool, dis_max 查询,或者是修改查询的一些查询比如constant_score查询

2.query和filter context

默认情况下,Elasticsearch按相关性得分对匹配的搜索结果进行排序,以衡量每个文档与查询的匹配程度。
相关性分数是一个正浮点数,在搜索API的_score元字段中返回。 _score越高,文档越相关。尽管每种查询类型可以用不同的方式地计算相关性分数,但是分数计算还取决于查询子句是在query context中还是在filter context中运行。

1. query context

在query context中,查询子句回答以下问题:“此文档与该查询子句的匹配程度如何?”除了确定文档是否匹配之外,查询子句还计算_score元字段中的相关性得分。

只要将查询子句传递到query参数(例如搜索API中的query参数),query context就有效。

2. filter context

在filter context中,查询子句回答问题“此文档是否与此查询子句匹配?”答案是简单的“是”或“否”,即不计算分数。filter context主要用于过滤结构化数据,例如下面的过滤:

  1. timestamp 字段是否在2015年至2016年的范围内?
  2. status 状态字段设置为“已发布”吗?

常用过滤器将由Elasticsearch自动缓存,以提高性能。
只要将查询子句传递到过滤器参数(例如bool查询中的filtermust_not参数,constant_score查询中的filter参数或过滤器聚合),filter context即有效。这一句也说明了filter context的使用场景。

3.使用样例

GET /_search
{"query": {   # 对应的query标识了一个query context"bool": {  # bool和对应的math都是对应了query context"must": [{ "match": { "title":   "Search"        }}, { "match": { "content": "Elasticsearch" }}  ],"filter": [ # 这里filter标识了一个filter context,下面的term,range都是在filter context中,不会影响score的计算 { "term":  { "status": "published" }}, { "range": { "publish_date": { "gte": "2015-01-01" }}} ]}}
}

这个查询要求下面的条件都要满足

  1. tiele field中有 “Search” 单词
  2. content field中有 Elasticsearch 单词
  3. status field 严格等于published
  4. publish_date 的日期大于 “2015-01-01”

01.query的分类-条件查询和组合查询相关推荐

  1. mysql 组合查询_MySQL组合查询教程

    #MYSQL#这是我MySQL的第八篇教程.本篇主要介绍的是MySQL的组合查询的用法.在大多数的SQL查询中都只包含从一个或者多个表中返回数据的单条SELECT语句,MySQL其实也支持允许执行多条 ...

  2. LinQ高级查询、组合查询

    LinQ高级查询.组合查询 LinQ高级查询: 1.模糊查询(包含) Repeater1.DataSource = con.car.Where(r =>r.name.Contains(s)).T ...

  3. 数据库系统实训——实验三——子查询与组合查询

    一.子查询与组合查询 题号:1 SQL语句描述: /SELECT ORDER_NUM FROM ORDERITEMS where prod_id='tnt2';/ /select cust_id fr ...

  4. 统计查询和组合查询(SQL SERVER 2008)

    一 .实验题目:统计查询和组合查询 二 .实验目的:加深对统计查询的理解,熟练使用聚簇函数 题目六: 药品(编号,名称,价格,厂商) 处方(药品编号,数量,医生编号) 医生 (编号,姓名,科室,职称) ...

  5. php组合查询,PHP组合查询多条件查询实例代码第1/2页

    先向大家说明需求:按照我们系统的要求,我们将通过部门名称.员工姓名.PC名称.IP地址等等字段来进行组合查询从而得到想要的数据结果.那么,为了简单起见,我们用两个条件(部门名称.员工姓名)的组合查询来 ...

  6. mysql存储过程判断多个条件语句_存储过程里多条件判断(SQL组合查询)

    我存储过程里想实现多个传入参数的判断,里面有7个传入参数条件. CREATE PROCEDURE sp_tbWasteSource_Search ( @sd   datetime,           ...

  7. mysql 查询和修改组合_别崩溃,来看这个MySQL全面瓦解:子查询和组合查询

    概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询. 先做一下数据准备,这边建立三张表:班级.学生. ...

  8. elasticsearch 建立索引、增删改查 及简单查询和组合查询的学习笔记

    创建一个索引(数据库) PUT lagou # 索引名称 {"settings": {"index":{"number_of_shards" ...

  9. elk组合查询 es组合查询

    笔记参考: https://note.youdao.com/ynoteshare/index.html?id=dc7be4dfa0d34d984223d4b87139b9c2&type=not ...

最新文章

  1. 手机哪个好用计算机,手机计算器软件哪个好用
  2. C++(STL):27 ---关联式容器set源码剖析
  3. windows下jenkins常见问题填坑
  4. Codeforces Round #148 (Div. 2)
  5. java pdf无法加载_java - 试图使用iText7合并来合并pdf,但是当我打开最终的合并pdf时,它说无法加载pdf文档 - SO中文参考 - www.soinside.com...
  6. springboot+flowable第二节(流程基本操作)
  7. PAT乙级1037 在霍格沃茨找零钱
  8. xxx.pch(No such file or directory)
  9. Bailian4003 十六进制转十进制【十六进制】
  10. [转载] Python: ljust()|rjust()|center()字符串对齐
  11. java实现列表拖动排序
  12. 常用html页面设计工具,网站前端开发常用工具大全-web设计师必备
  13. 【20保研】天津大学智能与计算学部2020级研究生招生夏令营活动通知
  14. ALM/QC11.0在win8/IE11下无法浏览
  15. 菜鸟日记(yzy):集成Ucrop裁剪图片架构,并创建管理类使用
  16. VUE项目中调用高德地图
  17. rand()函数详解
  18. unity获取电磁笔压感_一种智能终端电磁压感笔的制作方法
  19. 《LeetCode零基础指南》(第十一讲) 遇到不会的题怎么办?
  20. 【Linux】解压缩命令

热门文章

  1. 【Boost】boost库中thread多线程详解10——condition条件变量
  2. cocos2d-x游戏开发(十五)游戏加载动画loading界面
  3. listen函数与海量用户同时登陆
  4. 【视频编解码性能优化与实现】
  5. 为什么视频压缩如此重要
  6. 你对5G技术“低延时”可能有些误解——专访虎牙5G 首席架构师林正显
  7. 新一代音视频技术架构驱动未来多媒体创新
  8. 【传统PSTN与互联网通信】
  9. 李郁韬:短期爆发还是未来趋势?腾讯云海量音视频通信服务背后的技术发展
  10. 常青:小程序音视频能力再升级