Bool查询

允许在单独的查询中组合任意数量的查询,指定的查询语句表名哪些部分是必须匹配(must)、应该匹配(should)或不能匹配(must_not)

Bool过滤器

和查询功能一致,但是同等情况下,推荐使用过滤器

Range查询和过滤

用于查询介于一定范围之内的值,适用于数字,日期,字符串。
| 参数 | 含义 |
| :----: | :----: |
|gt | 搜索大于某值的字段,不包括该值本身
|gte | 搜索大于某值的字段,包括该值本身
|lt | 搜索小于某值的字段,不包括该值本身
|lte | 搜索小于某值的字段,包括该值本身

使用range查询时,请仔细考虑一下过滤器是否为更好的选择。由于在查询范围之中的文档是二元的匹配(“是的,文档在范围之中”或者“不是,文档不在范围之中”),
range
查询不必是查询。为了获得更好的性能,它应该是过滤器。如果不确定使用查询还是过滤器,请使用过滤器。在99%的用例中,使用range过滤器是正确的选择。

Prefix查询与过滤

和term查询类似,prefix 查询和过滤器允许你根据给定的前缀来搜索词条,这里前缀在搜索之前是没有经过分析的。例如,为了在索引中搜索以“liber” 开头的全部活动。

wildcard查询

字面意思,通配符查询,可使用 *,?来匹配任意字符。

exists过滤器

正如其名,exists 过滤器允许你过滤文档,只查找那些在特定字段有值的文档,无论其值是多少。exists 过滤器看上去是这样的

missing 过滤器
-----------
missing过滤器让你可以搜索字段里没有值,或者是映射时指定的默认值的文档(也叫作null值,即映射里的nul1_ value)。 为了搜索缺失reviews字段的文档,可以使用下面这样的过滤器:


常用案例中使用哪些类型的查询
|用例 | 使用的查询类型|
| :----: | :----: |
|你想从类似Google的界面接受用户的输入,然后根据这些输入搜索文档 |如果想支持+/-或者在特定字段中搜索,就使用match查询simple
query_ string查询|
|你想将输入作为词组并搜索包含这个词组的文档,词组中的单词间也许包含一些间隔(slop)| 要查找和用户搜索相似的词组,使用match phrase查询,并设置一定量的slop|
|你想在not_ analyzed字段中搜索单个的关键词,并完全清楚这个词应该是如何出现的| 使用term查询,因为查询的词条不会被分析
你希望组合许多不同的搜索请求或者不同类型的搜索,创建一个单独的搜索来处理它们 使用bool查询,将任意数量的子查询组合到一个单独的查询|
|你希望在某个文档中的多个字段搜索特定的单词| 使用multi_ match查询,它和match查询的表现类似,不过是在多个字段上搜索|
|你希望通过一次搜索返回所有的文档 |使用match_all查询,在---次搜索中返回全部文档|
|你希望在字段中搜索一定取值范围内的值| 使用range查询,搜索取值在一定范围内的文档|
|你希望在字段中搜索以特定字符串开头的取值| 使用prefix查询,搜索以给定字符串开头的词条|
|你希望根据用户已经输入的内容,提供单个关键词的自动完成功能| 使用prefix查询,发送用户已经输入的内容,然后获取以此文本开头的匹配项|
|你希望搜索特定字段没有取值的所有文档| 使用missing过滤器过滤出缺失某些字段的文档

ElasticSearch:组合查询或复合查询的更多相关文章

  1. Es学习第九课, 聚合查询和复合查询

    ES除了实现前几课的基本查询,也可以实现类似关系型数据库的聚合查询,如平均值sum.最小值min.最大值max等等 我们就用上一课的数据作为参考来举例 聚合查询 sum聚合 sum是一个求累加值的聚合 ...

  2. Elasticsearch(7) --- 复合查询

    Elasticsearch(7) ---复合查询 复合查询有:bool query(布尔查询).boosting query(提高查询).constant_score(固定分数查询).dis_max( ...

  3. elasticsearch组合多条件查询实现restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/372.html elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中 ...

  4. Python Elasticsearch api,组合过滤器,term过滤器,正则查询 ,match查询,获取最近一小时的数据

    Python Elasticsearch api   描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下 ...

  5. Elasticsearch 复合查询——多字符串多字段查询

    前言 有时我们在搜索电影的时候,包含了多个条件,比如主演是周星驰,打分8分以上,上映时间是1990年~2001年的,那么Elasticsearch又该如何帮我们做查询呢?这里我们可以用 bool 查询 ...

  6. Elasticsearch实现复合查询,高亮结果等技巧

    一.Es的配置 实现es的全文检索功能的第一步,首先从与es进行连接开始,这里我使用的是es的5.x java api语法. public TransportClient esClient() thr ...

  7. elasticsearch 复合查询

    常用查询 固定分数查询 127.0.0.1/_search(全文搜索) { "query":{ "match"{ "title":" ...

  8. Elasticsearch结构化搜索与查询

    Elasticsearch 的功能之一就是搜索,搜索主要分为两种类型,结构化搜索和全文搜索.结构化搜索是指有关查询那些具有内在结构数据的过程.比如日期.时间和数字都是结构化的:它们有精确的格式,我们可 ...

  9. 014-elasticsearch5.4.3【五】-搜索API【三】复合查询boolQuery、constantScoreQuery、disMaxQuery

    一.概述 复合查询包装其他复合或叶子查询,以组合其结果和分数,更改其行为,或从查询切换到筛选器上下文. 1.1.constantScoreQuery 包含另一个查询但在过滤器上下文中执行的查询.所有匹 ...

随机推荐

  1. 使用secureCRT上传下载

    secureCRT 的 下载 http://pan.baidu.com/s/1c1Mz1ks 下载完成后,输入yum install lrzsz,安装这个东西, 然后就可以直接在secureCRT中输 ...

  2. android 基于wifi模块通信开发

    这篇文章主要是我写完手机与wifi模块通信后所用来总结编写过程的文章,下面,我分几点来说一下编写的大概流程. 一.拉出按钮控件并设置它的点击事件 二.设置wifi权限 三.打开和关闭wifi 四.扫描 ...

  3. 浅析scrapy与scrapy_redis区别

    最近在工作中写了很多 scrapy_redis 分布式爬虫,但是回想 scrapy 与 scrapy_redis 两者区别的时候,竟然,思维只是局限在了应用方面,于是乎,搜索了很多相关文章介绍,这才搞 ...

  4. 泥瓦匠 5 年 Java 的成长感悟(下)

    继续<泥瓦匠 5 年 Java 的成长感悟(上)>,大致包括下面几点: 学技术的心态 学技术的学法 工作的心态 工作的硬技能 工作的软实力 听点雷子的民谣,我就安静地感概感概.上次说写的, ...

  5. 传输层的TCP和UDP协议

    作者:HerryLo 原文永久链接: https://github.com/AttemptWeb... TCP/IP协议, 你一定常常听到,其中TCP(Transmission Control Pro ...

  6. 改MySQL的编码方式,解决jdbc MySQL中文乱码问题

    进MySQL安装目录,打开my.ini 这两个地方改成gbk 重启服务

  7. hdu 6406 Taotao Picks Apples (线段树)

    Problem Description There is an apple tree in front of Taotao's house. When autumn comes, n apples o ...

  8. 【POJ - 3273】Monthly Expense (二分)

    Monthly Expense 直接上中文 Descriptions 给你一个长度为N的序列,现在要让你把他们切割成M份(所以每一份都是连续的),然后每一份都有一个和sum[i],其中最大的一个是ma ...

  9. win10和浏览器快捷键

    1. Win10快捷键[Win+↑/↓/←/→] 将当前窗口按比例固定到屏幕的四个边角,如左上.右上.左下.右下.[Win+1/2/3…] 按顺序打开任务栏上的已固定程序(不包括第一个“任务视图”按钮 ...

  10. python3学习--文件读写

    这一篇我们来看文件读写操作. 打开和创建文件主要是open()函数: f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = ...