背景

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 使用 Decorator 宏

    Decorator 宏(Macros)是 Velocity  宏.这个宏可以被用来在页面编辑 Custom decorators 中创建复杂或者可变的部分,例如菜单,页面其他部分等.Decorator ...

  2. Confluence 6 用自带的用户管理

    在一些特定的情况下,你可能希望禁用 Confluence 自带的用户管理或完全使用外部的用户目录进行用户管理.例如 Jira 软件或者 Jira Service Desk.你可以在 Confluenc ...

  3. select下拉框可以直接取list里的内容 不用非得转map (不得不承认我是个ZZ,这么简单的问题才反应过来,--^--)

    需求描述:select下拉框的填充项,从后台传来的list中获取 自黑一下:之前有篇随笔,写的是通过map传到前台,在前台的select中的value属性取值 用map的key,而select的tex ...

  4. 论文阅读笔记十四:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation(CVPR2015)

    论文链接:https://arxiv.org/abs/1506.04924 摘要 该文提出了基于混合标签的半监督分割网络.与当前基于区域分类的单任务的分割方法不同,Decoupled 网络将分割与分类 ...

  5. RFC2119:RFC协议动词含义

    协议地址:http://www.ietf.org/rfc/rfc2119.txt MUST 必须的.通过它描述的对象,是强制要求的.它与REQUIRED和SHALL含义相同. MUST NOT 不允许 ...

  6. ActiveSync 学习记录

    协议就是一种规范.它是高效团队协作的依据.有的人可能不爱看团队规范之类的文档,一方面是个人意识问题,另外也和文档的组织.协作的效果相关. 写好文档: 看好文档. 1. 处理XML转码 抓包后,发现邮件 ...

  7. 008-Python-模块

    1.模块 1.1什么是模块 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀: 模块分为: 内置模块(内部定义的如time,os,sys等) 第三方模块(需要安装 ...

  8. Java判断不为空的工具类总结

    1.Java判断是否为空的工具类,可以直接使用.包含,String字符串,数组,集合等等. package com.bie.util; import java.util.Collection; imp ...

  9. Temporal Segment Networks

    摘要 解决问题 用CNN框架有效提取video长时序特征 在UCF101等训练集受限的情况下训练网络 贡献 TSN网络,基于长时间时序结构模型.稀疏时序采样策略,视频层监督有效学习整个视频. HMDB ...

  10. IDEA 创建Spring MVC项目搭建

    概述 IntelliJ IDEA是一款更加集成智能的开发工具,相对Myeclipse开发而言,使用起来相对更加的方便:初步手动使用IDEA搭建Spring MVC项目,现将操作流程整理记录如下. 环境 ...