ElasticSearch:常用的基础查询与过滤器
match_all(获取所有索引文档)
quert_string(获取包含指定关键字文档)
默认查询_all字段,_all字段是由所有字段组合而成的,可以通过description:关键字,获取通过请求的时候来设置default_field。可使用AND和OR这种布尔操作符来组合词条搜索,也可以使用减号(-)来排除文档。
缺点:由于query_string可以通过组合条件来获取所有索引的文档,建议替换成term,terms,match或者multi_match查询
term查询和term过滤器
term可以指定搜索的文档字段和关键词(被搜索的关键词是没有经过分析的,所以返回的文档是精准匹配关键词的)term过滤器也可以是返回的结果包含指定关键词,但是无需计算得分,所以可以使用match_all,返回的所有文档_score都是1.0分。
terms查询
与term查询相似,允许查询多个关键词,通过minimum_should_match设置最低匹配几个关键词。
match查询
查询指定字段的关键词,也可以查询_all字段,match查询有多中方式,最常见的是布尔查询和词组。
1、布尔查询
默认情况下,match查询使用布尔行为和OR操作符。例如,如果搜索文本“Elasticsearch Denver”,Elasticsearch 会搜索“Elasticsearch OR Denver”,同时匹配“Elasticsearch Amsterdam’和“Denver Clojure Group”聚合分组。为了搜索同时包含“Elasticsearch” 和“Denver” 关键词的结果,将match字段的name修改为一个映射,并将operator字段设置为and,达到改变操作符的目的。
2、词组
在文档中搜索指定的词组时,phrase查询是非常有用的,每个单词的位置之间可以留有余地。这种余地称作slop,用于表示词组中多个分词之间的距离。假设你试图记起某个聚合分组的名字,只记得“Enterprise” 和“London” 两个词,但是不记得名字其余的部分了。你可以搜.索词组“enterprise london”,将slop设置为1或者2,而不是默认的0,如此-一来,没有必要知道分组的精确标题,就可以寻找包含该词组的结果。
phrase_prefix查询匹配最后一个关键词。在下面的例子中,phrase_ prefix查询使用的是“elasticsearch den”。Elasticsearch 使用“den”文本进行前缀匹配,查找所有name字段,发现那些以“den” 开始的取值(如“Denver”)。 由于产生的结果可能是个很大的集合,需要限制扩展的数量。
使用multi_ match来匹配多个字段
尽管很容易联想到,multi_ match查询和搜索单字段中多个匹配的词条查询,它们的行为表现会非常相像,但是两者的行为还是有细微的区别。多字段匹配允许你搜索多个字段中的值。在聚合的案例中,这一点非常有用,可以同时在分组的名称和描述中搜索某个字符串。
ElasticSearch:常用的基础查询与过滤器的更多相关文章
- 实战ELK(7)ElasticSearch常用的基本查询语句
1.term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经切词的文本数据类型): { "term": { "d ...
- Elasticsearch 常用基本查询
安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文 ...
- ElasticSearch 常用查询语句
为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...
- ElasticSearch(6)-结构化查询
引用:ElasticSearch权威指南 一.请求体查询 请求体查询 简单查询语句(lite)是一种有效的命令行_adhoc_查询.但是,如果你想要善用搜索,你必须使用请求体查询(request bo ...
- Elasticsearch 常用API
1. Elasticsearch 常用API 1.1.数据输入与输出 1.1.1.Elasticsearch 文档 #在 Elasticsearch 中,术语 文档 有着特定的含义.它是指最顶 ...
- Ext常用开发基础知识
Ext常用开发基础知识 组件定义 //这种方法可以缓存所需要的组件 调用起来比较方便(方法一 ) Ext.define('MySecurity.view.home.HomePanel', { //添加 ...
- Mego开发文档 - 基础查询
基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据 ...
- Linux最常用的基础命令
Linux最常用的基础命令个人总结 计算机基础知识: 32bit和64bit系统的区别.系统运行机制 32bit=内存的最大寻址空间是2**32,也就是说最大只能使用4GB的内存64bit=内存的最大 ...
- 实战ELK(2) ElasticSearch 常用命令
1.Cluster Health 集群状态 curl 'localhost:9200/_cat/health?v' yellow代表分片副本确实,因为我们现在只有一台机器. curl 'localho ...
随机推荐
- Git对象
上一节了解了 Git 的一个重要的概念:暂存区. 暂存区是一个介于工作区和版本库的中间状态,当执行commit时,实际上是将暂存区的内容提交大版本库中,而执行add则是将本次变更添加到暂存区. 上一节 ...
- Cocos2d-x 3.x 学习笔记(6):Sprite SpriteFrameCache Texture2D TextureCache
1. 概述 TextureCache是对Texture2D纹理的缓存,SpriteFrameCache是对SpriteFrame的缓存,每个SpriteFrame是对Texture2D的封装,Spri ...
- [leetcode] 8. String to Integer (atoi) (Medium)
实现字符串转整形数字 遵循几个规则: 1. 函数首先丢弃尽可能多的空格字符,直到找到第一个非空格字符. 2. 此时取初始加号或减号. 3. 后面跟着尽可能多的数字,并将它们解释为一个数值. 4. 字符 ...
- [系列] Gin框架 - 数据绑定和验证
目录 概述 推荐阅读 概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证. 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方 ...
- 如何在Eclipse中查看Java类库的源代码
你的JDK安装目录下%Java_home%/src.zip文件就是源码,解压缩找到对应包下面的类即可. 如果是Eclipse开发,ctr+鼠标左击,出现不了源码的话,在弹出的视图中点击attach s ...
- C/C++用new、delete分配回收堆中空间
int *CreateList() 10 { 11 int a[5]; 12 int *a = new int[5]; 13 delete[] a; 14 15 int a(5); 16 int a ...
- 【RabbitMQ】一文带你搞定RabbitMQ延迟队列
本文口味:鱼香肉丝 预计阅读:10分钟 一.说明 在上一篇中,介绍了RabbitMQ中的死信队列是什么,何时使用以及如何使用RabbitMQ的死信队列.相信通过上一篇的学习,对于死信队列已经有了更 ...
- centos7主机间免密登录、复制文件
下面实例为三个节点间 1.分别在三个节点设置域名映射 vi /etc/hosts 在文件末尾追加 192.168.10.121 node1 192.168.10.122 node2 192.168. ...
- 19.包 logging 的使用
包 什么是包: ---文件夹下具有__init__.py文件就是一个包 推荐使用 from . import 包的导入; from ss.bake.api.policy import func --- ...
- BrowserSync,自动刷新,解放F5,去掉更新提示
BrowserSync虽然这个技术不算新,但是依然有用.略微介绍下 没有安装node,先安装node,这里不再做介绍 安装 npm install -g browser-sync 全局安装,方便在任 ...