背景

Elasticsearch 不像关系型数据库,没有简易的 SQL 用来查询数据,只能通过调用 RESTful API 实现查询。大体上查询分为两种,基于 URL 的和基于请求主体的。基于 URL 的方式比较简单清晰,用得较多,在这简单记录下。

基本模式

基于 URL 的搜索请求基本模式如上图所示:
1,是一个 Linux curl 命令,利用命令行的方式发起一个 HTTP 命令;
2,则是url路径,指明搜索范围,比如上图所指的搜索范围就是 get-together 索引下的 group 类型;
3,是 _search 端点(Endpoint),表明这是一个搜索请求;
4,传入一个 pretty参数,美化(格式化)返回结果,非必填。
运行该条命令后,会查询出get-together 索引下的 group 类型下的所有文档。

q

q 参数用于指定搜索的关键词

# 搜索 get-together 索引,group 类型中,包含“elasticsearch”的文档
curl -X GET 'localhost:9200/get-together/group/_search?pretty&q=elasticsearch' # 搜索 get-together 索引,group 类型中,属性 description 包含“elasticsearch”的文档
curl -X GET 'localhost:9200/get-together/group/_search?pretty&q=description:elasticsearch'

from & size

假设某个搜索请求会返回一大批文档,出于网络性能的考虑,往往不需要全部返回,所以可以使用 from,size 来达到限制结果集数量的目的。from 指定起始,size 指定起始后多少条文档,比如 from=0,size=2,表明从第0条开始返回,最多返回两条文档,如下所示。

curl -X GET 'localhost:9200/get-together/group/_search?pretty&from=0&size=2'

size如果不指定,默认为10

sort

对结果排序,默认是降序,可以利用 asc,desc 表明是升序还是降序,另外除了对文档属性值进行排序,还可以对文档的评分进行排序

# 对 created_on 字段进行排序,利用asc,desc指明是升序还是降序
curl -X GET 'localhost:9200/get-together/group/_search?pretty&sort=created_on:asc'
curl -X GET 'localhost:9200/get-together/group/_search?pretty&sort=created_on:desc' # 对文档的评分进行排序
curl -X GET 'localhost:9200/get-together/group/_search?pretty&q=elasticsearch&sort=_score'

_source

或出于网络性能,或出于结果清晰,往往只关注文档的某几个属性。我们可以使用 _source 来指明只返回哪些属性

curl -X GET 'localhost:9200/get-together/group/_search?pretty&_source=organizer,description'

引用

1.《Elasticsearch 实战》- Radu Gheorghe

Elasticsearch 基于 URL 的搜索请求的更多相关文章

  1. 〈三〉ElasticSearch的认识:搜索、过滤、排序

    目录 上节回顾 本节前言 文档的搜索 URL参数条件搜索 请求体条件搜索 语法与示例: 补充: 小节总结: 文档的过滤filter 语法与举例: filter与bool constant_score ...

  2. #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

    郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...

  3. 转:在ElasticSearch之下(图解搜索的故事)

    ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事) 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么我 ...

  4. Elasticsearch java api 基本搜索部分详解

    文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...

  5. elasticsearch(4) 轻量搜索

    一 空搜索 搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档: 示例 GET 127.0.0.1:9200/_search 响应 { , "tim ...

  6. ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事)

    ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事) 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么我 ...

  7. ElasticSearch 2 (18) - 深入搜索系列之控制相关度

    ElasticSearch 2 (18) - 深入搜索系列之控制相关度 摘要 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库只需要检查一个文档(或行,在关系数据库)是否与查询匹配. 布尔是/ ...

  8. ElasticSearch 2 (17) - 深入搜索系列之部分匹配

    ElasticSearch 2 (17) - 深入搜索系列之部分匹配 摘要 到目前为止,我们介绍的所有查询都是基于完整术语的,为了匹配,最小的单元为单个术语,我们只能查找反向索引中存在的术语. 但是, ...

  9. ElasticSearch 2 (14) - 深入搜索系列之全文搜索

    ElasticSearch 2 (14) - 深入搜索系列之全文搜索 摘要 在看过结构化搜索之后,我们看看怎样在全文字段中查找相关度最高的文档. 全文搜索两个最重要的方面是: 相关(relevance ...

随机推荐

  1. Confluence 6 通过 SSL 或 HTTPS 运行 - 修改你 Confluence 的 server.xml 文件

    下一步你需要配置 Confluence 来使用 HTTPS: 编辑 <install-directory>/conf/server.xml 文件. 取消注释下面的行: <Connec ...

  2. ajax-简单参数方法实现阴影效果

    注: 简单参数 (按照参数的数量和位置传递参数) 使用时按照位置.数量传递 shadow.js函数 //简单参数实现方式/** slices:阴影* opacity:透明度* zIndex:层级* * ...

  3. SSM + Android 网络文件上传下载

    SSM + Android 网络交互的那些事 2016年12月14日 17:58:36 ssm做为后台与android交互,相信只要是了解过的人都知道一些基本的数据交互,向json,对象,map的交互 ...

  4. labelme连续将文件夹中的json文件进行可视化的指令

    for /r C:\Users\Fourmi\Desktop\ZP0 %i in (*.json) do labelme_json_to_dataset %i

  5. 滴水穿石-07Java开发中常见的错误

    1:使用工具Eclipse 1.1 "语法错误" 仅当源级别为 1.5 时已参数化的类型才可用 设置eclipse,窗口—>java—>编译器—>JDK一致性调到 ...

  6. Ubuntu下创建桌面快捷方式(以Pycharm为例)

    之后要在Ubuntu虚拟机上玩PyTorch,安装了Pycharm. 然而每次打开Pycharm需要在其bin目录下进入终端,然后输入sh pycharm.sh,很麻烦.既然Ubuntu是桌面系统,为 ...

  7. 一个页面中使用多个UEditor

    如何在一个页面中使用多个Ueditor: 引入这些js: <script src="~/Scripts/ueditor/ueditor.config.js"></ ...

  8. 一脸懵逼学习MapReduce的原理和编程(Map局部处理,Reduce汇总)和MapReduce几种运行方式

    1:MapReduce的概述: (1):MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. (2):MapReduce由两个阶段组成:Map和Red ...

  9. RSA javascript加密 lua解密

    一个在线RSA非对称加密解密,可以用这个地址生成公钥和私钥 https://blog.zhengxianjun.com/online-tool/rsa/ javascript加密 jsencrypt. ...

  10. ASP.NET Core IHostEnvironment和IApplicationLifetime介绍

    IHostEnvironment获取程序信息 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app ...