环境
elasticsearch 6.2
前言
翻译
原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html
Date Math
接收格式化日期值的大多数参数可以通过 – 例如: 在range queries
中范围查询的gt
和lt
,
或者 在daterange aggregations
中的from
和to
– 来理解date math
表达式要以一个anchor date
(基准日期)开始,其可以是now
,或者是一个以||
结尾的日期字符串。
此基准日期可以选择性地后跟一个或者多个数学表达式。
+1h
- 加一个小时-1h
- 减一个小时/h
- 向下舍入到最近的一天
所支持的 time units ( 时间单位 )不同于持续时间支持的 时间单位。所支持的单位是:
符号 | 含义 |
---|---|
y | 年 |
M | 月 |
w | 周 |
d | 天 |
h | 12进制的小时 |
H | 24进制的小时 |
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 减一个小时,向下舍入到UTC 00:00 。解析为:2001-01-01 00:00:00 |
2001.02.01||+1M/d | 在毫秒上2001-02-01 加一个月。解析为:2001-03-01 00:00:00 |
Response Filtering 响应过滤
所有的REST APIs
都接收filter_path
参数,该参数用于减少elasticsearch
返回的响应。该参数采用用点符号表示的以逗号分隔的过滤器列表:
GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score
响应:
{
"took" : 3,
"hits" : {
"hits" : [
{
"_id" : "0",
"_score" : 1.6375021
}
]
}
}
它也支持*
通配符来匹配任意字段或者部分字段名:
GET /_cluster/state?filter_path=metadata.indices.*.stat*
响应:
{
"metadata" : {
"indices" : {
"twitter": {"state": "open"}
}
}
}
并且 **
通配符可以用于包括不知道确切路径的字段。例如,我们可以返回带有此请求的每个 segment
( 段 ) 的 Lucene
版本:
GET /_cluster/state?filter_path=routing_table.indices.**.state
响应:
{
"routing_table": {
"indices": {
"twitter": {
"shards": {
"0": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
"1": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
"2": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
"3": [{"state": "STARTED"}, {"state": "UNASSIGNED"}],
"4": [{"state": "STARTED"}, {"state": "UNASSIGNED"}] }
}
}
}
}
也可以通过前缀过滤字符-
来排除一个或者多个字段:
GET /_count?filter_path=-_shards
响应:
{
"count" : 5
}
为了更多的控制,包含过滤和排除过滤可以在同一个表达式中联合使用。
在这种情况下,排除过滤器将会被首先使用,接着结果又会被包含过滤器再过滤一遍。
GET /_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
参数组合起来:
POST /library/book?refresh
{"title": "Book #1", "rating": 200.1}
POST /library/book?refresh
{"title": "Book #2", "rating": 1.7}
POST /library/book?refresh
{"title": "Book #3", "rating": 0.1}
GET /_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 Settings 平面设置
flat_settings
标志影响设置列表的呈现。当 flat_settings 标志为 true 时,设置以平面格式返回:
GET 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
,设置将会返回以人更容易阅读的结构化格式:
GET twitter/_settings?flat_settings=false
返回:
{
"twitter" : {
"settings" : {
"index" : {
"number_of_replicas": "1",
"number_of_shards": "1",
"creation_date": "1474389951325",
"uuid": "n6gzFZTgS664GUfx0Xrpjw",
"version": {
"created": ... },
"provided_name" : "twitter"
}
}
}
}
flat_settings
默认为false
。
Parameters
Rest 参数(当使用HTTP
时,映射到HTTP URL
参数)遵循使用下划线的惯例。
Boolean Values
所有的REST API
参数支持提供布尔false
作为假的值,true
作为真的值。所有的其他值,都视为错误。