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:常用的基础查询与过滤器的更多相关文章

  1. 实战ELK(7)ElasticSearch常用的基本查询语句

    1.term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经切词的文本数据类型): { "term": { "d ...

  2. Elasticsearch 常用基本查询

    安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文 ...

  3. ElasticSearch 常用查询语句

    为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...

  4. ElasticSearch(6)-结构化查询

    引用:ElasticSearch权威指南 一.请求体查询 请求体查询 简单查询语句(lite)是一种有效的命令行_adhoc_查询.但是,如果你想要善用搜索,你必须使用请求体查询(request bo ...

  5. Elasticsearch 常用API

    1.   Elasticsearch 常用API 1.1.数据输入与输出 1.1.1.Elasticsearch 文档   #在 Elasticsearch 中,术语 文档 有着特定的含义.它是指最顶 ...

  6. Ext常用开发基础知识

    Ext常用开发基础知识 组件定义 //这种方法可以缓存所需要的组件 调用起来比较方便(方法一 ) Ext.define('MySecurity.view.home.HomePanel', { //添加 ...

  7. Mego开发文档 - 基础查询

    基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据 ...

  8. Linux最常用的基础命令

    Linux最常用的基础命令个人总结 计算机基础知识: 32bit和64bit系统的区别.系统运行机制 32bit=内存的最大寻址空间是2**32,也就是说最大只能使用4GB的内存64bit=内存的最大 ...

  9. 实战ELK(2) ElasticSearch 常用命令

    1.Cluster Health 集群状态 curl 'localhost:9200/_cat/health?v' yellow代表分片副本确实,因为我们现在只有一台机器. curl 'localho ...

随机推荐

  1. 十、SQL中EXISTS的用法 十三、sql server not exists

    十.SQL中EXISTS的用法 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测 行 的存在. 语法 ...

  2. 在ts+vue中实现前端批量下载打包二维码

    ---恢复内容开始--- 一.插件安装 首先是插件的安装与引入,这里我们用的是qrcode的这个插件,直接使用npm install qrcodejs2安装即可,但是这里要注意,如果你用的是ts进行开 ...

  3. MyBatis 框架 基础应用

    1.ORM的概念和优势 概念: 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据 ...

  4. 北大ACM试题分类+部分解题报告链接

    转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 部分解题报告添加新内容,除了原有的"大致题意&q ...

  5. docker挂载volume的用户权限问题,理解docker容器的uid

    docker挂载volume的用户权限问题,理解docker容器的uid 在刚开始使用docker volume挂载数据卷的时候,经常出现没有权限的问题. 这里通过遇到的问题来理解docker容器用户 ...

  6. 自定义SWT控件一之自定义单选下拉框

    一.自定义下拉控件 自定义的下拉框,是自定义样式的,其中的下拉框使用的是独立的window,非复选框的下拉框双击单机其它区域或选择完之后,独立window构成的下拉框会自动消失. package co ...

  7. Netty源码分析-- FastThreadLocal分析(十)

    上节讲过了ThreadLocal的源码,这一节我们来看下FastThreadLocal.这个我觉得要比ThreadLocal要简单,因为缺少了对于Entry的清理和整理工作,所以ThreadLocal ...

  8. ImageView 使用详解

    极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...

  9. 33行代码爬取妹子图片(bs4+urllib)

    from bs4 import BeautifulSoupimport urllib2import urllibimport lxmlimport os def get_imgs(): image_c ...

  10. JAVA基础知识(三):input.nextLine() 和input.next()

    next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其过滤掉:只有在读取到有效字符之后,next()方 ...