mirror of
https://github.com/iSharkFly-Docs/opensearch-docs-cn
synced 2025-02-28 04:19:04 +00:00
Adds date math documentation (#2171)
* Adds date math documentation Signed-off-by: Fanit Kolchina <kolchfa@amazon.com> * Incorporated doc review comments Signed-off-by: Fanit Kolchina <kolchfa@amazon.com> * Incorporated editorial comments Signed-off-by: Fanit Kolchina <kolchfa@amazon.com> Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>
This commit is contained in:
parent
4710471e5b
commit
f9a9ea1baf
@ -697,7 +697,7 @@ Sample Response
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The `date_histogram` aggregation uses date math to generate histograms for time-series data.
|
The `date_histogram` aggregation uses [date math]({{site.url}}{{site.baseurl}}/opensearch/supported-field-types/date/#date-math) to generate histograms for time-series data.
|
||||||
|
|
||||||
For example, you can find how many hits your website gets per month:
|
For example, you can find how many hits your website gets per month:
|
||||||
|
|
||||||
|
@ -329,9 +329,9 @@ GET products/_search
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Specify relative dates by using basic math expressions.
|
Specify relative dates by using [date math]({{site.url}}{{site.baseurl}}/opensearch/supported-field-types/date/#date-math).
|
||||||
|
|
||||||
To subtract 1 year and 1 day from the specified date:
|
To subtract 1 year and 1 day from the specified date, use the following query:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
GET products/_search
|
GET products/_search
|
||||||
|
@ -209,3 +209,127 @@ GET testindex/_search
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Date math
|
||||||
|
|
||||||
|
The date field type supports using date math to specify duration in queries. For example, the `gt`, `gte`, `lt`, and `lte` parameters in [range queries]({{site.url}}{{site.baseurl}}/opensearch/query-dsl/term/#range-query) and the `from` and `to` parameters in [date range aggregations]({{site.url}}{{site.baseurl}}/opensearch/bucket-agg/#range-date_range-ip_range) accept date math expressions.
|
||||||
|
|
||||||
|
A date math expression contains a fixed date, optionally followed by one or more mathematical expressions. The fixed date may be either `now` (current date and time in milliseconds since the epoch) or a string ending with `||` that specifies a date (for example, `2022-05-18||`). The date must be in the `strict_date_optional_time||epoch_millis` format.
|
||||||
|
|
||||||
|
Date math supports the following mathematical operators.
|
||||||
|
|
||||||
|
Operator | Description | Example
|
||||||
|
:--- | :--- | :---
|
||||||
|
`+` | Addition | `+1M`: Add 1 month.
|
||||||
|
`-` | Subtraction | `-1y`: Subtract 1 year.
|
||||||
|
`/` | Rounding down | `/h`: Round to the beginning of the hour.
|
||||||
|
|
||||||
|
Date math supports the following time units:
|
||||||
|
|
||||||
|
`y`: Years<br>
|
||||||
|
`M`: Months<br>
|
||||||
|
`w`: Weeks<br>
|
||||||
|
`d`: Days<br>
|
||||||
|
`h` or `H`: Hours<br>
|
||||||
|
`m`: Minutes<br>
|
||||||
|
`s`: Seconds
|
||||||
|
{: .note }
|
||||||
|
|
||||||
|
### Example expressions
|
||||||
|
|
||||||
|
The following example expressions illustrate using date math:
|
||||||
|
|
||||||
|
- `now+1M`: The current date and time in milliseconds since the epoch, plus 1 month.
|
||||||
|
- `2022-05-18||/M`: 05/18/2022, rounded to the beginning of the month. Resolves to `2022-05-01`.
|
||||||
|
- `2022-05-18T15:23||/h`: 15:23 on 05/18/2022, rounded to the beginning of the hour. Resolves to `2022-05-18T15`.
|
||||||
|
- `2022-05-18T15:23:17.789||+2M-1d/d`: 15:23:17.789 on 05/18/2022 plus 2 months minus 1 day, rounded to the beginning of the day. Resolves to `2022-07-17`.
|
||||||
|
|
||||||
|
|
||||||
|
### Using date math in a range query
|
||||||
|
|
||||||
|
The following example illustrates using date math in a [range query]({{site.url}}{{site.baseurl}}/opensearch/query-dsl/term/#range-query).
|
||||||
|
|
||||||
|
Set up an index with `release_date` mapped as `date`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
PUT testindex
|
||||||
|
{
|
||||||
|
"mappings" : {
|
||||||
|
"properties" : {
|
||||||
|
"release_date" : {
|
||||||
|
"type" : "date"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Index two documents into the index:
|
||||||
|
|
||||||
|
```json
|
||||||
|
PUT testindex/_doc/1
|
||||||
|
{
|
||||||
|
"release_date": "2022-09-14"
|
||||||
|
}
|
||||||
|
|
||||||
|
PUT testindex/_doc/2
|
||||||
|
{
|
||||||
|
"release_date": "2022-11-15"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The following query searches for documents with `release_date` within 2 months and 1 day of 09/14/2022. The lower boundary of the range is rounded to the beginning of the day on 09/14/2022:
|
||||||
|
|
||||||
|
```json
|
||||||
|
GET testindex/_search
|
||||||
|
{
|
||||||
|
"query": {
|
||||||
|
"range": {
|
||||||
|
"release_date": {
|
||||||
|
"gte": "2022-09-14T15:23||/d",
|
||||||
|
"lte": "2022-09-14||+2M+1d"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The response contains both documents:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"took" : 1,
|
||||||
|
"timed_out" : false,
|
||||||
|
"_shards" : {
|
||||||
|
"total" : 1,
|
||||||
|
"successful" : 1,
|
||||||
|
"skipped" : 0,
|
||||||
|
"failed" : 0
|
||||||
|
},
|
||||||
|
"hits" : {
|
||||||
|
"total" : {
|
||||||
|
"value" : 2,
|
||||||
|
"relation" : "eq"
|
||||||
|
},
|
||||||
|
"max_score" : 1.0,
|
||||||
|
"hits" : [
|
||||||
|
{
|
||||||
|
"_index" : "testindex",
|
||||||
|
"_id" : "2",
|
||||||
|
"_score" : 1.0,
|
||||||
|
"_source" : {
|
||||||
|
"release_date" : "2022-11-14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_index" : "testindex",
|
||||||
|
"_id" : "1",
|
||||||
|
"_score" : 1.0,
|
||||||
|
"_source" : {
|
||||||
|
"release_date" : "2022-09-14"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user