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. C#4.0新增功能01 动态绑定 (dynamic 类型)

    连载目录    [已更新最新开发文章,点击查看详细] C# 4 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像 ...

  2. [leetcode] 621. Task Scheduler(medium)

    原题 思路: 按频率最大的字母来分块,频率最大的字母个数-1为分成的块数,每一块个数为n+1 比如AAABBCE,n=2, 则分为A-A- +A AAABBBCCEE,n=2,则分为AB-AB- +A ...

  3. 常用socket函数详解

    常用socket函数详解 关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确.每次都查半天,经常烦恼于此.索性都弄 ...

  4. Python基础之用户交互、流程控制、循环语句

    python的简洁性真的令人叹为观止,没有JAVA那种输入还要导个包,不学不知道,一学吓一跳啊! 我在学这些基础的时候,会把python和java.c做对比,这样更好的理解记忆! 用户交互(输入) i ...

  5. python课堂整理3---字符串魔法

    字符串魔法 1.首字母大写功能 test = "alex" v = test.capitalize() print(v) 2.所有变小写(casefold更厉害,可以将很多未知的其 ...

  6. MySQL不停地自动重启怎么办

    近期,测试环境出现了一次MySQL数据库不断自动重启的问题,导致的原因是强行kill -9 杀掉数据库进程导致,报错信息如下: --24T01::.769512Z [Note] Executing ' ...

  7. Linux基础之特殊权限

    22.5)特殊权限 22.5.1)SetUID(简称suid)(数字权限是4000) 命令功能: 临时使用命令的属主权限执行该命令.即如果文件有suid权限时,那么普通用户去执行该文件时,会以该文件的 ...

  8. ORM详解

    讲解对象:ORM详解 作者:融水公子 rsgz 1 前言:开发流程正常只有简单的几步 0.1 配置数据库 0.2 定义模型 0.3 迁移文件 0.4 执行迁移生成数据表 0.5 使用模型类增删改查 2 ...

  9. 【iOS】Receiver type 'XXX' for instance message is a forward declaration

    今天遇到这个错误.刚开始字体太大,没显示全,后来调小字体之后看到了完整提示信息: 之后就忽然想起没引入相关的类,添加 #import "RDVTabBarItem.h" 就行了.

  10. hdoj 3555 BOMB(数位dp)

    //hdoj 3555 //2013-06-27-16.53 #include <stdio.h> #include <string.h> __int64 dp[21][3], ...