【ElasticSearch】:QueryDSL
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的更多相关文章
- 【ElasticSearch】:索引Index、文档Document、字段Field
因为从ElasticSearch6.X开始,官方准备废弃Type了.对应数据库,对ElasticSearch的理解如下: ElasticSearch 索引Index 文档Document 字段Fiel ...
- 【ElasticSearch】:elasticsearch.yml配置
ElasticSearch5的elasticsearch.yml配置 注意 elasticsearch.yml中的配置,冒号和后面配置值之间有空格 cluster.name: my-applicati ...
- 【ElasticSearch】:Windows下ElasticSearch+版本安装head
概述 elasticsearch-head,之前插件plugin方式已废弃,现已改为nodejs的NPM安装,独立WEB服务方式. elasticsearch-head网址:https://githu ...
- 【ElasticSearch】:Mapping相关
Mapping 类似数据库中的表结构定义,主要作用如下: 定义Index下的字段名(Field Name). 定义字段类型,例如数值型.字符串型.布尔型等. 定义倒排索引相关配置,比如是否索引.记录p ...
- 【ElasticSearch】 elasticsearch-head插件安装
本章介绍elasticsearch-head插件安装,elasticsearch安装参考:[ElasticSearch] 安装 elasticsearch-head安装和学习可参照官方文档: http ...
- 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器
系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...
- Python开发【前端】:jQuery
jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是&qu ...
- Python开发【前端】:DOM
DOM(文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页 ...
- Python开发【前端】:JavaScript
JavaScript入门 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...
随机推荐
- 定时调度系列之Quartz.Net详解(转)
出处:https://www.cnblogs.com/yaopengfei/p/9216229.html 一. 背景 我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提 ...
- 第14章:MongoDB-聚合操作--聚合管道
① 聚合管道是MongoDB2.2版本引入的新功能.它由阶段(Stage)组成,文档在一个阶段处理完毕后,聚合管道会把处理结果传到下一个阶段. 每个阶段用阶段操作符(Stage Operators)定 ...
- HDMI之(AVI)Auxiliary Video Information InfoFrame
这是HDMI协议中关于AVI接口的信息 AVI InfoFrame在H14b中进行了定义.从HDMI 2.0 10.1 Use of the AVI InfoFrame in This Spe ...
- Arria10_emif
DDR3 由排(Rank),体(Bank),行(Row),列(Column)组成的四维结构. Arria10是第一批支持ddr4的altera Arria10与老器件相比的新结构 (1) 更多的硬( ...
- HDU-3608 最长回文
HDU-3608 最长回文 题面 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如ab ...
- python基础之列表list元组tuple
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...
- C#-VS配置开发环境-摘
配置开发环境 包含的开发环境 LightSwith LightSwitch 微软出品 web界面开发部署非常方便
- X Window(远程桌面)
X Window在位映射屏幕上的一个或多个窗口中运行程序.用户可以在每个窗口中同时运行多个程序,并且可以通过用鼠标在窗口之间进行切换. x服务器的程序在本地工作站上运行,并且管理它的窗口和程序. 每个 ...
- poj1741(点分模板)
#include<iostream> #include<cstring> #include<cmath> #include<cstdio> #inclu ...
- (完全背包) Piggy-Bank (hdu 1114)
题目大意: 告诉你钱罐的初始重量和装满的重量, 你可以得到这个钱罐可以存放钱币的重量,下面有 n 种钱币, n 组, 每组告诉你这种金币的价值和它的重量,问你是否可以将这个钱 ...