本文主要是介绍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】常见选项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!