Elaticsearch REST API常用技巧
在Elasticsearch的REST API中,有很多使用技巧,这里针对官方文档给出的介绍,总结了几个常用的例子。
更多内容参考:Elastisearch文档总结
多索引
ES支持在一次请求中指定多个索引,可以使用通配符或者日期表达式的方式:
例如,foo*索引会匹配foo1,foo2,foo3等索引。_all则会匹配所有的索引。
同时也可以针对不可用的索引进行限制。
日期表达式支持如下的格式:
<static_name{date_math_expr{date_format|time_zone}}>
static_name是索引的静态部分
date_math_expr是日期表达式
后面跟着date_format是日期的格式;time_zone为时区
举个例子,如果想要查询logstash前两天的日期,可以写成:
curl -XGET 'localhost:9200/<logstash-{now/d-2d}>/_search' {
"query" : {
...
}
}
再比如,当前的时间是2014年3月22日,那么:
<logstash-{now/d}> 会匹配 logstash-2024.03.
<logstash-{now/M}> 会匹配 logstash-2024.03.
<logstash-{now/M{YYYY.MM}}> 会匹配 logstash-2024.03
<logstash-{now/M-1M{YYYY.MM}}> 会匹配 logstash-2024.02
<logstash-{now/d{YYYY.MM.dd|+:}} 会匹配 logstash-2024.03.
过去三天的索引可以表示为:
curl -XGET 'localhost:9200/<logstash-{now/d-2d}>,<logstash-{now/d-1d}>,<logstash-{now/d}>/_search' {
"query" : {
...
}
}
过滤
所有的API都可以接受一个参数,filter_path,这个参数指定了过滤后的字段,返回的结果只会显示过滤指定的内容:
curl -XGET 'localhost:9200/_search?pretty&filter_path=took,hits.hits._id,hits.hits._score'
{
"took" : ,
"hits" : {
"hits" : [
{
"_id" : "",
"_score" : 1.0
},
{
"_id" : "",
"_score" : 1.0
}
]
}
}
支持使用通配符,进行匹配
curl -XGET 'localhost:9200/_nodes/stats?filter_path=nodes.*.ho*'
{
"nodes" : {
"lvJHed8uQQu4brS-SXKsNA" : {
"host" : "portable"
}
}
}
如果使用了两个**则会匹配所有的内容
curl 'localhost:9200/_segments?pretty&filter_path=indices.**.version'
{
"indices" : {
"movies" : {
"shards" : {
"" : [ {
"segments" : {
"_0" : {
"version" : "5.2.0"
}
}
} ],
"" : [ {
"segments" : {
"_0" : {
"version" : "5.2.0"
}
}
} ]
}
},
"books" : {
"shards" : {
"" : [ {
"segments" : {
"_0" : {
"version" : "5.2.0"
}
}
} ]
}
}
}
}
如果要过滤_source,那么需要重新指定_source中的字段:
curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title'
{
"hits" : {
"hits" : [ {
"_source":{"title":"Book #2"}
}, {
"_source":{"title":"Book #1"}
}, {
"_source":{"title":"Book #3"}
} ]
}
}
结果内容扁平化
使用flat_settings参数,它只会影响到返回的内容显示,例如设置为true后返回的内容是下面这种:
{
"persistent" : { },
"transient" : {
"discovery.zen.minimum_master_nodes" : ""
}
}
而设置为false,则为:
{
"persistent" : { },
"transient" : {
"discovery" : {
"zen" : {
"minimum_master_nodes" : ""
}
}
}
}
返回内容格式化
正常返回的数据,可能是混杂在一行的,人的肉眼很难分别其中的信息,这时,可以再请求的末尾添加?pretty=true,或者?format-yaml设置成可读的形式。
pretty是以JSON的形式返回结果。直接写?pretty与?pretty=true作用一样
yaml则是使用横向缩进的方式展现结果。
返回结果可读
返回的结果设置为可读,对于我们肉眼去观察结果也很重要,比如:
"exists_time": "1h"
"size": "1kb" 要比 "exists_time_in_millis":
"size_in_bytes": 容易理解的多
参考
【1】YAML格式
Elaticsearch REST API常用技巧的更多相关文章
- 微信小程序入门与实战 常用组件API开发技巧项目实战*全
第1章 什么是微信小程序? 第2章 小程序环境搭建与开发工具介绍 第3章 从一个简单的“欢迎“页面开始小程序之旅 第4章 第二个页面:新闻阅读列表 第5章 小程序的模板化与模块化 第6章 构建新闻详情 ...
- Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python
http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操 ...
- 初学者的API测试技巧
API(应用程序编程接口)测试是一种直接在API级别执行验证的软件测试.它是集成测试的一部分,它确认API是否满足测试人员对功能.可靠性.性能和安全性的期望.与UI测试不同,API测试是在没有GUI层 ...
- python算法常用技巧与内置库
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
- 【shell 大系】Linux Shell常用技巧
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
- oracle存储过程常用技巧
我们在进行pl/sql编程时打交道最多的就是存储过程了.存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识.如:游标的处理,异常的处理,集 ...
- Vim 常用技巧:
Vim 常用技巧: 将回车由默认的8个空格改为4个空格: 命令:set sw=4 修改tab为4空格: 命令:set ts=4 设置每一级的缩进长度: 命令:set shiftwidth=4 设置文件 ...
- JS~~~ 前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧!!!!!!
前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧!!!!!!2016-09-29 17 ...
- Android ListView 常用技巧
Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...
随机推荐
- tomcat 运行程序很慢 运行一段时间就报错: java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space 全称是Permanent Generation space,是指内存的永久保存区域. 由于这块内存主要是被JVM存放 ...
- iOS 里面 NSTimer 防止 循环引用
使用NSTimer的类 #import "TBTimerTestObject.h" #import "TBWeakTimerTarget.h" @interfa ...
- OSX 下搭建Asp.Net vNext的开发环境
开年第一天,按照惯例逛逛各个网站,看看7天有没有什么错过的东西,偶见VS 2015的CPT 6发布了,据说更新ASP.NET,就顺便去官方网站看了看,也忘记在什么地方偶然发现一个叫OmniSharp的 ...
- 运用DebugDiag诊断ASP.Net异常
Debug Diagnostic Tool (DebugDiag)是用来帮助诊断IIS/COM+等应用假死.性能差.内存泄露及碎片和崩溃等问题的工具. 本文介绍如何运用DebugDiag诊断特定的AS ...
- Java提高篇(三一)-----Stack
在Java中Stack类表示后进先出(LIFO)的对象堆栈.栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的.每一个栈都包含一个栈顶,每次出栈是将栈顶的数据取出,如下: Stack通过 ...
- FusionCharts简单教程(三)-----如何自定义图表上的工具提示
最近有蛮多人总是问我这个FusionCharts制表的问题,帮助他们解决之后,在昨晚发现以前整理的笔记中有这个简单教程,而且以前也发表了几篇这个博文,所以就将其全部上传上来供别人参考.如有不正确之处望 ...
- 使用ViwePager显示图片时如何防止内存泄露。
内存泄露的检测. 1. 在Android Studio中运行你的应用,然后切换到输出窗口的Android tab. 2. 尽情的玩耍你的应用,最好各个功能都用到,如果是Viewpager,则多滑动一些 ...
- 线程池ThreadPool知识碎片和使用经验速记
ThreadPool(线程池)大概的工作原理是,初始时线程池中创建了一些线程,当应用程序需要使用线程池中的线程进行工作,线程池将会分配一个线程,之后到来的请求,线程池都会尽量使用池中已有的这个线程进行 ...
- Java程序员的日常 —— Java类加载中的顺序
之前说过Java中类的加载顺序,这次看完继承部分,就结合继承再来说说类的加载顺序. 继承的加载顺序 由于static块会在首次加载类的时候执行,因此下面的例子就是用static块来测试类的加载顺序. ...
- Android开发学习之路-Service和Activity的通信
在很多时候,Service都不仅仅需要在后台运行,还需要和Activity进行通信,或者接受Activity的指挥,如何来实现,来看代码. 定义一个服务 // 创建一个服务,然后在onBind()中返 ...