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.22
<logstash-{now/M}> 会匹配 logstash-2024.03.01
<logstash-{now/M{YYYY.MM}}> 会匹配 logstash-2024.03
<logstash-{now/M-1M{YYYY.MM}}> 会匹配 logstash-2024.02
<logstash-{now/d{YYYY.MM.dd|+12:00}} 会匹配 logstash-2024.03.23

过去三天的索引可以表示为:

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" : 3,
  "hits" : {
    "hits" : [
      {
        "_id" : "3640",
        "_score" : 1.0
      },
      {
        "_id" : "3642",
        "_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" : {
        "0" : [ {
          "segments" : {
            "_0" : {
              "version" : "5.2.0"
            }
          }
        } ],
        "2" : [ {
          "segments" : {
            "_0" : {
              "version" : "5.2.0"
            }
          }
        } ]
      }
    },
    "books" : {
      "shards" : {
        "0" : [ {
          "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" : "1"
  }
}

而设置为false,则为:

{
  "persistent" : { },
  "transient" : {
    "discovery" : {
      "zen" : {
        "minimum_master_nodes" : "1"
      }
    }
  }
}

返回内容格式化

正常返回的数据,可能是混杂在一行的,人的肉眼很难分别其中的信息,这时,可以再请求的末尾添加?pretty=true,或者?format-yaml设置成可读的形式。

pretty是以JSON的形式返回结果。直接写?pretty与?pretty=true作用一样

yaml则是使用横向缩进的方式展现结果。

返回结果可读

返回的结果设置为可读,对于我们肉眼去观察结果也很重要,比如:

"exists_time": "1h"
"size": "1kb"

要比

"exists_time_in_millis": 3600000
"size_in_bytes": 1024

容易理解的多

参考

【1】YAML格式

【2】ElastICsearch APIs

本文转自博客园xingoo的博客,原文链接:Elaticsearch REST API常用技巧,如需转载请自行联系原博主。

时间: 2024-09-21 02:50:21

Elaticsearch REST API常用技巧的相关文章

MFC程序设计常用技巧汇总_C 语言

本文实例总结了MFC程序设计常用技巧.分享给大家供大家参考.具体如下: 1.属性页的添加: 创建对话框的类,该类要从CpropertyPage继承:然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch:最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码: 复制代码 代码如下: m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, 0);

轻松玩转花样表单(四)常用技巧

技巧 四.表单的常用技巧 这些常用技巧,往往是和事件以及脚本联系在一起,本文注重功能,至于脚本,就不一一详细分析.常见的技巧有:下拉跳转菜单,表单内容的聚焦. 1.下拉跳转菜单 在Dreamweaver中,可以很方便地建立基于表单的下拉菜单,为了兼顾非Dreamweaver用户,这里讲述一下这种技巧. 样例22:基于表单的下拉跳转菜单 ChinabyteSinanetease 分析:实际上,这里用到了一个函数,用于向选择的地址跳转, <script language="JavaScript

Z-BLOG常用技巧汇总

这里发布一些收集来的Z-BLOG的一些常用技巧,供爱好者定制自己的BLOG. 高效能的日志搜索 用途:搜索是非常消耗系统资源的动作,而且对于多关键字搜索和模糊搜索,处理起来也非常麻烦,这里提供了一个非常高效而实用的搜索方法,就是使用Google的站内搜索技术,当你的日志被Google索引了大部分的时候,这种搜索方法的效果会特别出色.新站或Google网页级别低的不建议使用这种方法. 方法: 修改search.asp文件,将原文件备份,新建立一个search.asp文件内容如下: response

网页制作——CSS的常用技巧放送

css|技巧|网页 CSS的常用技巧放送(一) 一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则请参看<常用css缩写语法总结>,这里就不展开描述. 二.明确定义单位,除非值为0忘记定义尺寸的单位是CSS新手普遍的错误.在HTML中你可以只写width=100,但是在CSS中,你必须给一个准确的单位,比如:width: 100px width:100em.只有两个例外情况可以不定义单位:行高和0值.除此以外,其他值都必须紧跟单位,注意,不要在数值和

PHP编程常用技巧四则(转贴)

编程|技巧 PHP编程常用技巧四则 1.配置PHP文件目录 作为服务器端解释执行的脚本语言,PHP程序放置在某个服务器可以访问的目录下,一般可以通过修改Apache的httpd.conj进行配置,例如我们在该文件中的一句: Alias /test/ "d:/phpwebsite/php/" 那么在浏览器端输入:"http://localhost/test/+PHP文件名"就可以访问d:/phpwebsite/php/下的PHP文件了:可见该行不过是为存放PHP文件的

ODBC API常用函数诠释

odbc|函数 ODBC API常用函数诠释记得kony曾经在我的这个坛子上转过一个帖子,解释使用ODBC数据源来连接数据库进行数据库操作速度慢的原因,同时那个帖子也提出了提高ODBC数据源连接数据库进行数据库操作速度的两个办法,一个是利用Visiual Basic中的RDO组件,一个就是直接调用odbc api函数进行相关数据库操作,应答应过这里的弟弟妹妹们写点关于ODBC API函数方面的东东,所以只能赶鸭子上架了:      以下为ODBC API的常用十四个函数,先列出在PowerBui

PHP编程常用技巧

编程|技巧 PHP编程常用技巧四则 1.配置PHP文件目录 作为服务器端解释执行的脚本语言,PHP程序放置在某个服务器可以访问的目录下,一般可以通过修改Apache的httpd.conj进行配置,例如我们在该文件中的一句: Alias /test/ "d:/phpwebsite/php/" 那么在浏览器端输入:"http://localhost/test/+PHP文件名"就可以访问d:/phpwebsite/php/下的PHP文件了:可见该行不过是为存放PHP文件的

SharePoint常用技巧

1.网站内容和结构(/_layouts/sitemanager.aspx) 自己使用SharePoint也有一年了,居然没有发现这个页面,鄙视自己一下,才发现这个页对数据进行操作,会方便很多,比如列表中测试数据的批量删除,之前都是在数据行中删除,还经常发现数据行视图不好用的情况,其实,使用这个页里面,右侧点击列表,可以批量删除,方便得很. 其实批量删除也就不算什么了,这个还有更方便的,甚至可以批量复制数据,从A列表中的数据导入到B列表中去,当然如果字段不一样,SharePoint自己会扩展出来缺

Excel数据透视表10大常用技巧

  Excel数据透视表10大常用技巧           1.样式改变为表格样式 2.计数项改为求和项 3.套用样式 4.隐藏和显示汇总项 5.合并单元格 6.列宽及格式保持不变