• Search API

  

  • URI Search

  

  • Response Body Search

  

  • Query DSL

  Response Body Search使用Query DSL语句,相对URI Search功能更加灵活强大。

  Query DSL是基于JSON定义的查询语言,主要包含如下2种类型:

  

  • Query DSL--字段类查询

  term精确查询,match全文检索,range范围查询

  

  • Query DSL--字段类查询--match全文检索

  match查询对输入文本分词后,做全文检索。

  

  

  如果match多个单词,单词间空格分隔,是or关系查询

  

  使用"operator":"and"来表示单词间是and关系查询

  

  输入了多个单词,任意minimum_should_match个被匹配到就查询出来。

  

  • Query DSL--字段类查询--match_phrase短语匹配

  match_phrase短语匹配,查询确切的phrase,在对查询字段定义了分词器的情况下,会使用分词器对输入进行分词,然后返回满足下述两个条件的document:

  1.match_phase中的所有term都出现在待查询字段之中。

  2.待查询字段之中的所有term都必须和match_phase具有相同的顺序。

  

  

  使用slop参数,可以控制match_phrase间隔。

  

  

  • Query DSL--字段类查询--term精确匹配

  term把输入作为一个整体单词,不对输入做分词处理,做精确匹配。

  

  terms把输入的多个单词,分别作为一个个整体单词,不对输入做分词处理,做精确匹配。

  

  • Query DSL--范围查询--数值类型

  

  

  • Query DSL--范围查询--日期时间类型  

  对日期时间做范围查询,输入支持绝对日期时间,也支持相对当前时间的相对日期时间。

  

      

  

  • Query DSL--Bool查询  

  支持更复杂的组合查询。

  

  • Query DSL--Bool查询--Filter    

  

  • Query DSL--Bool查询--Must    

  

  • Query DSL--Bool查询--Must_Not    

  

  • Query DSL--Bool查询--Must_Not    

  

  

  • 回顾与对比:

  query:检索,除了确定文档是否匹配外,查询子句还计算了表示文档与其他文档相比匹配程度的_score;得分越高,相关度越高--更相关的文件,在搜索排名更高。适用于全文检索
  filter:过滤器,在搜索中没有额外的相关度排名,适用于完全精确匹配,范围检索。
6.X版本已经去除了单独的filter过滤器,与query组合使用。

  • query字段里面内容需要全文检索的放must,字段里面内容只需要精确匹配过滤出来的放filter
  • 输入数据需要文本分词用match,输入数据不需要文本分词用term。
  • 全文检索以及任何使用相关性评分的场景使用query检索,除此之外的其他使用filter过滤器过滤。

  另外2个我们生产中常用的查询API:

  • _count:

  不看返回结果,只想看匹配结果数量用_count。

  

  • _souce:

  只返回_source中的指定字段,节约网络开销。

【ElasticSearch】:QueryDSL的更多相关文章

  1. 【ElasticSearch】:索引Index、文档Document、字段Field

    因为从ElasticSearch6.X开始,官方准备废弃Type了.对应数据库,对ElasticSearch的理解如下: ElasticSearch 索引Index 文档Document 字段Fiel ...

  2. 【ElasticSearch】:elasticsearch.yml配置

    ElasticSearch5的elasticsearch.yml配置 注意 elasticsearch.yml中的配置,冒号和后面配置值之间有空格 cluster.name: my-applicati ...

  3. 【ElasticSearch】:Windows下ElasticSearch+版本安装head

    概述 elasticsearch-head,之前插件plugin方式已废弃,现已改为nodejs的NPM安装,独立WEB服务方式. elasticsearch-head网址:https://githu ...

  4. 【ElasticSearch】:Mapping相关

    Mapping 类似数据库中的表结构定义,主要作用如下: 定义Index下的字段名(Field Name). 定义字段类型,例如数值型.字符串型.布尔型等. 定义倒排索引相关配置,比如是否索引.记录p ...

  5. 【ElasticSearch】 elasticsearch-head插件安装

    本章介绍elasticsearch-head插件安装,elasticsearch安装参考:[ElasticSearch] 安装 elasticsearch-head安装和学习可参照官方文档: http ...

  6. 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器

    系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...

  7. Python开发【前端】:jQuery

    jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是&qu ...

  8. Python开发【前端】:DOM

    DOM(文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页 ...

  9. Python开发【前端】:JavaScript

    JavaScript入门 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...

随机推荐

  1. 70.app上架被拒(info.plist定位参数配置)

    问题一: Your app declares support for location in the UIBackgroundModes key in your Info.plist file but ...

  2. Java HttpURLConnection 下载图片 图片全是“加密图片”文字,怎么解决?

    package com.qzf.util; import java.io.FileOutputStream;import java.io.IOException;import java.io.Inpu ...

  3. 2018.11.03 NOIP模拟 地球发动机(线性dp)

    传送门 考试5分钟写完. 如果没这题今天多半爆零了(汗 直接二分出合法的转移范围. 然后用后面的状态更新前面的就可以了. 代码

  4. IPython:一种交互式计算和开发环境

    IPython基础 可以通过命令行启动IPython,执行任何Python语句,只需将其输入然后回车. Tab键自动完成 在Shell中输入表达式时,只要按下Tab键,当前命名空间中任何与已输入的字符 ...

  5. 黑白二值图像周长测量--C#实现

    假设是单像素线白色用1(对应RGB(255,0,0))表示,背景用0(对应RBG(0,0,0))表示. 考虑3种类型的边界 水平方向  0->1  1->0   类似垂直方向也是0-> ...

  6. java常用设计模式十:模板模式

    一.定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 如果上面的话不好理解,请看下面的例子 二.示例 1)定义一个模 ...

  7. 查阅JDK,collection与collections区别大

    看起来collection,和collections相像,但其中的差别之大你造吗? Collection是Collection层次结构中的根接口.Collection表示一组对象,这也对象也称为col ...

  8. HDMI ip中的时钟 vid_clk与ls_clk

    由TMDS_Bit_clock_Ratio.TMDS_clk和色彩深度,就可以确定出tmds_clk,cdr_clk,vid_clk和ls_clk之间的关系. 1.Tmds_clk时钟频率的确定: 原 ...

  9. [待完善]mycat使用(一)

    生产上的mycat已经投入使用,这次的应用场景是数据写入和查询都非常大的一个需求,而且经常出现多表join的查询 1.应用上线没多久出现大量慢查询: 分片键的选择率非常高,但没有建索引,在其上加上索引 ...

  10. 查看Redis集群所有节点内存工具

    指定集群中任意一个节点,查看集群中所有节点当前已用物理内存.配置的最大物理内存和系统物理内存. ​ ​源码(可从https://github.com/eyjian/redis-tools下载): #! ...