Elasticsearch REST APIs是用HTTP暴露的,并且是基于JSON的。

除非另有说明,否则本章中的约定都可以使用REST API来使用。多索引

索引名称中支持日期数学

公用选项

基于URL的访问控制

多索引

大多数引用index参数的api支持跨多个索引执行,使用简单的test1,test2,test3表示法(或_all表示所有索引)。

所有多索引API都支持下面的url查询字符串参数:

| ignore_unavailable | 如果指定索引是不可用的,控制是否忽略该索引。包括b不存在的索引和已关闭(closed)的索引,可以指定ture或者false | | -------------------- | ------------------------------------------------------------ | | allow_no_indices | 通配符索引表达式没有具体的索引时,控制结果是否失败。可以指定true或false。例如,如果指定通配符表达式foo*,并且没有以foo开头的索引可用,请求将失败。当_all、*或没有指定索引时,此设置也适用。此设置也适用于别名,以防别名指向已关闭(closed)索引。 | | expand_wildcards | 控制通配符索引表达式可以扩展为何种具体索引。如果指定了open,则通配符表达式将扩展为仅打开索引。如果指定了closed,则通配符表达式仅扩展到封闭索引。还可以指定这两个值(open和closed)扩展到所有索引。 |

上述参数的默认设置取决于所使用的API。与多索引API相对的是单索引API,例如DocumentAPI和aliasAPI就不支持多索引。

索引名称中支持日期数学

日期数学索引名称解析可以让你搜索一段time-series区间的索引,而不是搜索所有time-series索引并过滤结果或维护别名。限制搜索索引的数量可以减少集群上的负载并提高执行性能。例如,如果在日常日志中搜索错误,可以使用date math name模板将搜索限制在过去两天。

几乎所有具有index参数的api都在index参数值中支持日期数学。

日期数学索引名称采用以下形式:

| static_name是名称的静态文本部分 | | ------------------------------------------------------------ | | date_math_expr是动态日期表达式,用来动态的计算 | | date_format日期的展现格式,是可选的,默认为yyyy.MM.dd。格式应该与Java-time兼容 | | time_zone可选的时区,默认为utc |

注意在date_format中使用小写字母vs大写字母。例如:mm表示每小时的分钟,而mm表示一年的月份。同样,hh表示1-12小时范围内的小时与AM/PM相结合,而hh表示0-23 24小时范围内的小时。注意date_format中小写和大写字母的使用。 例如:mm表示分钟,而MM表示一年中的月份。 类似地,hh表示1-12范围内的小时与AM / PM的组合,而HH表示0-23小时范围内的小时。

日期数学表达式与区域时间无关。 因此,除了公历之外,不可能使用任何其他日历。

必须将date math索引名称表达式括在大括号内,并且所有特殊字符都应该是URI编码的。例如:

# GET //_search

curl -X GET "localhost:9200/%3Clogstash-%7Bnow%2Fd%7D%3E/_search" -H 'Content-Type: application/json' -d'

{

"query" : {

"match": {

"test": "data"

}

}

}

'date math 字符对应的编码

日期的括号,必须使用URI编码,可参照下表:

| < | %3C | | ---- | ----- | | > | %3E | | / | %2F | | { | %7B | | } | %7D | | | | %7C | | + | %2B | | : | %3A | | , | %2C |

下面的示例显示了不同形式的日期数学索引名,它们根据当前时间解析的最终索引名是22nd March 2024 noon utc。

| Expression | Resolves to | | :-------------------------------------- | :-------------------- | | | logstash-2024.03.22 | | | logstash-2024.03.01 | | | logstash-2024.03 | | | logstash-2024.02 | | | logstash-2024.03.23 |

要在索引名称模板的静态部分中使用字符{和},请使用反斜杠\来转义它们,例如: → elastic{ON}-2024.03.01

以下示例显示搜索请求,该搜索请求搜索过去三天的Logstash索引,假设索引使用默认的Logstash索引名称格式logstash-yyyy.MM.dd。

# GET /,,/_search

curl -X GET "localhost:9200/%3Clogstash-%7Bnow%2Fd-2d%7D%3E%2C%3Clogstash-%7Bnow%2Fd-1d%7D%3E%2C%3Clogstash-%7Bnow%2Fd%7D%3E/_search" -H 'Content-Type: application/json' -d'

{

"query" : {

"match": {

"test": "data"

}

}

}

'

公用选项

下面所有的选项可以用在所有的API上。

美化的结果

当对请求添加pretty = true时,返回的JSON将被格式化(仅用于调试!)。 另一种选择是设置format = yaml,这将导致以可读的yaml格式返回结果。

可读的输出

统计以可读的格式(例如“exists_time”:“1h”或“size”:“1kb”)和计算机(例如“exists_time_in_millis”:3600000或“size_in_bytes”:1024)返回。 可以通过向查询字符串添加human = false来关闭可读取的格式。 当统计结果被监视工具使用而不是供人使用时。默认值为false。

日期数学(Date Math)

大多数参数接受一个格式化的日期值,例如在range查询的gt和lt,或者daterange聚合中的from和to

表达式以锚定日期开始,可以是now,也可以是以||结尾的日期字符串。 此锚定日期可以选择后跟一个或多个数学表达式:+1h: 加一个小时

-1d: 减少一个小时

/d: 舍入到最近的一天

支持的时间单位与持续时间的时间单位支持的时间单位不同。 支持的单位是:

| y | 年 | | ---- | ---- | | M | 月 | | w | 周 | | d | 天 | | h | 时 | | H | 时 | | m | 分 | | s | 秒 |

假设now 是 2001-01-01 12:00:00, 例如:

| now+1h | now以毫秒为单位上加一小时. 结果是: 2001-01-01 13:00:00 | | --------------------- | ------------------------------------------------------------ | | now-1h | now 以毫秒为单位减去一小时. 结果是: 2001-01-01 11:00:00 | | now-1h/d | now 以毫秒为单位减去1小时, 四舍五入到UTC 00:00.结果为: 2001-01-01 00:00:00 | | 2001.02.01\|\|+1M/d | 2001-02-01 以毫秒为单位加一个月. 结果为: 2001-03-01 00:00:00 |

响应过滤

所有的REST API都可以接受filter_path参数,可以用来减少响应的返回,此参数采用逗号分隔的过滤器列表,用点表示法表示:

curl -X GET "localhost:9200/_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score"

响应结果:

{

"took" : 3,

"hits" : {

"hits" : [

{

"_id" : "0",

"_score" : 1.6375021

}

]

}

}

它还支持*通配符匹配任何字段或字段名称的一部分:

curl -X GET "localhost:9200/_cluster/state?filter_path=metadata.indices.*.stat*"

响应结果:

{

"metadata" : {

"indices" : {

"twitter": {"state": "open"}

}

}

}

并且**通配符可用于包括字段而不知道字段的确切路径。 例如,我们可以使用此请求返回每个片的Lucene版本:

curl -X GET "localhost:9200/_cluster/state?filter_path=routing_table.indices.**.state"

响应结果:

{

"routing_table": {

"indices": {

"twitter": {

"shards": {

"0": [{"state": "STARTED"}, {"state": "UNASSIGNED"}]

}

}

}

}

}

也可以通过在过滤器前面添加-来排除一个或多个字段

curl -X GET "localhost:9200/_count?filter_path=-_shards"

响应结果:

{

"count" : 5

}

并且为了进行更多控制,可以将包含和排他过滤器组合在同一表达式中。 在这种情况下,将首先应用独占过滤器,并使用包含过滤器再次过滤结果:

curl -X GET "localhost:9200/_cluster/state?filter_path=metadata.indices.*.state,-metadata.indices.logstash-*"

响应结果:

{

"metadata" : {

"indices" : {

"index-1" : {"state" : "open"},

"index-2" : {"state" : "open"},

"index-3" : {"state" : "open"}

}

}

}

注意,Elasticsearch有时会直接返回字段的原始值,像_source字段,如果你想过滤_source字段,您应该考虑将已经存在的_source参数与filter_path参数组合起来,如下所示:

curl -X POST "localhost:9200/library/book?refresh" -H 'Content-Type: application/json' -d'

{"title": "Book #1", "rating": 200.1}

'

curl -X POST "localhost:9200/library/book?refresh" -H 'Content-Type: application/json' -d'

{"title": "Book #2", "rating": 1.7}

'

curl -X POST "localhost:9200/library/book?refresh" -H 'Content-Type: application/json' -d'

{"title": "Book #3", "rating": 0.1}

'

curl -X GET "localhost:9200/_search?filter_path=hits.hits._source&_source=title&sort=rating:desc"

{

"hits" : {

"hits" : [ {

"_source":{"title":"Book #1"}

}, {

"_source":{"title":"Book #2"}

}, {

"_source":{"title":"Book #3"}

} ]

}

}

Flat设置

flat_settings标志会影响设置列表的呈现。 当flat_settings标志为true时,将以如下格式返回设置:

curl -X GET "localhost:9200/twitter/_settings?flat_settings=true"

响应结果:

{

"twitter" : {

"settings": {

"index.number_of_replicas": "1",

"index.number_of_shards": "1",

"index.creation_date": "1474389951325",

"index.uuid": "n6gzFZTgS664GUfx0Xrpjw",

"index.version.created": ...,

"index.provided_name" : "twitter"

}

}

}

flat_settings 默认值为 false.

参数

REST参数(使用HTTP时,映射到HTTP URL参数)遵循使用下划线框的约定。

布尔值

所有的REST API参数(请求参数和JSON主体)都支持提供布尔值“false”作为值false,布尔值“true”作为值true。 所有其他值都会引发错误。

数值

所有REST api都支持以字符串的形式提供参数(这个字符串必须符合数字格式,例如不能是12a)。

时间单位

当需要指定持续时间时,例如对于超时参数,持续时间必须指定单位,比如2d,持续2天。支持单位包括:

| d | 天 | | -------- | ---- | | h | 时 | | m | 分 | | s | 秒 | | ms | 毫秒 | | micros | 微秒 | | nanos | 纳秒 |

字节大小单位

每当需要指定数据的字节大小时,例如, 设置缓冲区大小参数时,该值必须指定单位,如10千字节为10千字节。 请注意,这些单位使用1024的幂,因此1kb表示1024字节。 支持的单位是:

| b | Bytes | | ---- | --------- | | kb | Kilobytes | | mb | Megabytes | | gb | Gigabytes | | tb | Terabytes | | pb | Petabytes |

无单位数量

无单位数量意味着它们没有“单位”,如“字节”、“赫兹”、“米”或“吨”。

如果这些量中有一个很大,我们将打印出来,比如10m(10,000,000)或7k(7000)。当我们的意思是87时,我们仍然会打印87。这些是支持的乘数:

| k | Kilo | | ---- | ---- | | m | Mega | | g | Giga | | t | Tera | | p | Peta |

距离单位

在需要指定距离的地方,比如地理距离查询中的距离参数,如果没有指定距离,默认单位是米。距离可以用其他单位表示,如“1km”或“2mi”(2英里)。

| Mile | mi or miles(英里) | | ------------- | --------------------------------------- | | Yard | yd or yards(码) | | Feet | ft or feet(尺) | | Inch | in or inch(英寸) | | Kilometer | km or kilometers(千米) | | Meter | m or meters(米) | | Centimeter | cm or centimeters(厘米) | | Millimeter | mm or millimeters(毫米) | | Nautical mile | NM, nmi, or nauticalmiles(纳米) |

模糊

一些查询和api支持使用模糊参数进行模糊匹配。

当查询text或keyword字段时,模糊性被解释为Levenshtein编辑距离——需要对一个字符串进行的字符数更改,以使其与另一个字符串相同。

fuzziness可以被指定为:

| 0, 1, 2 | 最大允许的 Levenshtein Edit Distance (或者编辑数) | | ------------- | ------------------------------------------------------------ | | AUTO | 根据术语的长度生成编辑距离。 可选择提供低距离和高距离参数AUTO:[low],[high]。 如果未指定,则默认值为3和6,相当于AUTO:3,6表示长度:

0..2

必须完全匹配

3..5

允许一次编辑

>5

允许两次编辑

AUTO通常应该是模糊的首选值。 |

启用堆栈跟踪

当请求时返回一个错误,默认情况下,Elasticsearch不会包含错误的堆栈跟踪。你可以通过设置error_traceurl参数为truel来启用堆栈跟踪,例如:默认的,当你发送一个无效的size给_searchAPI:

curl -X POST "localhost:9200/twitter/_search?size=surprise_me"

相应结果如下:

{

"error" : {

"root_cause" : [

{

"type" : "illegal_argument_exception",

"reason" : "Failed to parse int parameter [size] with value [surprise_me]"

}

],

"type" : "illegal_argument_exception",

"reason" : "Failed to parse int parameter [size] with value [surprise_me]",

"caused_by" : {

"type" : "number_format_exception",

"reason" : "For input string: \"surprise_me\""

}

},

"status" : 400

}

如果你设置error_trace=true

curl -X POST "localhost:9200/twitter/_search?size=surprise_me&error_trace=true"

相应结果如下:

{

"error": {

"root_cause": [

{

"type": "illegal_argument_exception",

"reason": "Failed to parse int parameter [size] with value [surprise_me]",

"stack_trace": "Failed to parse int parameter [size] with value [surprise_me]]; nested: IllegalArgumentException..."

}

],

"type": "illegal_argument_exception",

"reason": "Failed to parse int parameter [size] with value [surprise_me]",

"stack_trace": "java.lang.IllegalArgumentException: Failed to parse int parameter [size] with value [surprise_me]\n at org.elasticsearch.rest.RestRequest.paramAsInt(RestRequest.java:175)...",

"caused_by": {

"type": "number_format_exception",

"reason": "For input string: \"surprise_me\"",

"stack_trace": "java.lang.NumberFormatException: For input string: \"surprise_me\"\n at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)..."

}

},

"status": 400

}

请求体在查询字符串中

对于不接受非post请求的请求体的库,可以将请求体作为source查询字符串参数传递。当使用此方法时,source_content_type参数还应该与指示源格式的媒体类型一起传递,例如application/json。

Content-Type要求

必须使用Content-Type请求头指定请求体中发送的内容类型。Content-type的值必须是API支持格式之一。大多数api支持JSON、YAML、CBOR和SMILE。批量和多搜索api支持NDJSON、JSON和SMILE;其他类型将导致错误响应。

或者,当我们使用source查询字符串参数,必须使用source_content_type指定Content-Type。

基于URL的访问控制

许多用户使用基于url的访问控制代理来确保对Elasticsearch索引的访问。对于多搜索、多获取和批量请求,用户可以选择在URL中指定索引,也可以选择在请求体中指定每个请求的索引。

要防止用户覆盖URL中指定的索引,请将此设置添加到elasticsearch.yml文件中:

rest.action.multi.allow_explicit_index:false

默认值为true,但是当你设置为false,Elasticsearch将拒绝在请求体中指定显式索引的请求。

api es7 删除所有数据_Elasticsearch7.1中文文档-第四章-API约定相关推荐

  1. ASP.NET Core 中文文档 第四章 MVC(4.2)控制器操作的路由

    原文:Routing to Controller Actions 作者:Ryan Nowak.Rick Anderson 翻译:娄宇(Lyrics) 校对:何镇汐.姚阿勇(Dr.Yao) ASP.NE ...

  2. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  3. ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证

    原文:Model Validation 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 在这篇文章中: 章节: 介绍模型验证 验证 Attribute 模型状态 处理 ...

  4. ASP.NET Core 中文文档 第四章 MVC(3.9)视图组件

    作者: Rick Anderson 翻译: 娄宇(Lyrics) 校对: 高嵩 章节: 介绍视图组件 创建视图组件 调用视图组件 演练:创建一个简单的视图组件 附加的资源 查看或下载示例代码 介绍视图 ...

  5. ASP.NET Core 中文文档 第三章 原理(3)静态文件处理

    原文:Working with Static Files 作者:Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay).孟帅洋(书缘) 静态文 ...

  6. ASP.NET Core 中文文档 第三章 原理(5)错误处理

    原文:Error Handling 作者:Steve Smith 翻译:谢炀(Kiler) 校对:高嵩(jack2gs).何镇汐 当你的ASP.NET应用发生错误的时候, 你可以采用本文所述的各种方法 ...

  7. 【Scikit-Learn 中文文档】四十:数据集加载工具 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/stable/datasets/index.html 英文文档: http://sklearn.apachecn.org/en ...

  8. api es7 删除所有数据_男子让月薪6万的人技术入股,结果工作3月蒙了:删除所有数据入职其他公司...

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注:本文转载自网络,不代表 ...

  9. api es7 删除所有数据_【Elasticsearch7.0】文档接口之查询delete接口

    功能介绍 删除除了之前讲的之外,还有可以根据条件来进行删除._delete_by_query接口是对查询到的结果进行删除操作,如示例: curl -XPOST "http://127.0.0 ...

最新文章

  1. Ubuntu14.04桥接网络设置与SSH登陆
  2. 国家邮政局公布一项数据 春节期间快递数量依旧很猛!
  3. configure报错C compiler cannot create executables
  4. 数学建模论文书写总结
  5. win10下使用opencv4.5.0 cuda版本编译和目标检测的几个问题
  6. 远程桌面链接怎么共享本地磁盘
  7. 6个不可多得的黑科技网站!
  8. 给元素设置鼠标移入后变为手型的属性
  9. 推送原理解析 极光推送使用详解
  10. UG\NX二次开发 获取UG窗口句柄。实现操作UG窗口最小化、最大化、关闭功能
  11. AUTOCAD绘制3D家具有感
  12. Android APP 快速开发教程(安卓)
  13. 文本分类和聚类有什么区别
  14. 腾讯云-即时通信 IM uni-app 和 java 整合过程
  15. 西安知名IT互联网公司—为自己回西安做铺垫
  16. Linux中的文件IO以及JDK中的NIO模型简介
  17. 读 Flink 源码,肝进阿里云 Flink 组了。。
  18. 2022年最新宠物十二生肖区块系统源码
  19. android pdf preview,Preview 真的能解决你的 PDF 预览需求吗?
  20. 《港囧》徐峥:不会互联网思维的导演不是好产品经理

热门文章

  1. angularjs实际工程目录结构
  2. 使用 GetOleDbSchemaTable
  3. 关于内部网络病毒泛滥的一个解决办法
  4. mysql hy000 2013_MySQLERROR2013(HY000)错误解决方法
  5. linux c 创建新线程,Linux C Phread 入门1---线程创建
  6. uhd630黑苹hdmi_【EFI】联想 ThinkCentre M920t-N000 i5-9500 UHD630 ALC662 10.14.6 HDMI 黑苹果Hackintosh 引导下载...
  7. 计算机应用技术专业考试试题,全国专业技术人员计算机应用能力考试模拟试题笔试题.docx...
  8. java impliments,java基础英语---第九天
  9. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
  10. ae制作小球轨迹运动_关于3D建筑漫游动画制作流程及技术详解