本文主要是介绍API Conventions【Common optionsedit】常见选项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
环境
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
作为真的值。所有的其他值,都视为错误。
这篇关于API Conventions【Common optionsedit】常见选项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!