時(shí)間范圍查詢
簡(jiǎn)單示例
GET /_search
{
"query": {
"range": {
"timestamp": {
"gte": "now-1d/d", // 當(dāng)前時(shí)間的上一天, 四舍五入到最近的一天
"lte": "now/d" // 當(dāng)前時(shí)間, 四舍五入到最近的一天
}
}
}
}
關(guān)于時(shí)間的數(shù)學(xué)表達(dá)式(date-math)
Elasticsearch中時(shí)間可以表示為now
, 也就是系統(tǒng)當(dāng)前時(shí)間, 也可以是以||
結(jié)尾的日期字符串表示.
在日期之后, 可以選擇一個(gè)或多個(gè)數(shù)學(xué)表達(dá)式:
-
+1h
—— 加1小時(shí); -
-1d
—— 減1天; -
/d
—— 四舍五入到最近的一天.
下面是Elasticsearch支持?jǐn)?shù)學(xué)表達(dá)式的時(shí)間單位:
表達(dá)式 | 含義 | 表達(dá)式 | 含義 |
---|---|---|---|
y | 年 | M | 月 |
w | 星期 | d | 天 |
h | 小時(shí) | H | 小時(shí) |
m | 分鐘 | s | 秒 |
說(shuō)明: 假設(shè)系統(tǒng)當(dāng)前時(shí)間now = 2018-10-01 12:00:00 :
now+1h
: now的毫秒值 + 1小時(shí), 結(jié)果是: 2018-10-01 13:00:00.now-1h
: now的毫秒值 - 1小時(shí), 結(jié)果是: 2018-10-01 11:00:00.now-1h/d
: now的毫秒值 - 1小時(shí), 然后四舍五入到最近的一天的起始, 結(jié)果是: 2018-10-01 00:00:00.2018.10.01||+1M/d
: 2018-10-01的毫秒值 + 1月, 再四舍五入到最近一天的起始, 結(jié)果是: 2018-11-01 00:00:00
關(guān)于時(shí)間的四舍五入
官方:時(shí)間的四舍五入
對(duì)日期中的日、月、小時(shí)等 進(jìn)行四舍五入時(shí), 取決于范圍的結(jié)尾是包含(include)還是排除(exclude).
向上舍入: 移動(dòng)到舍入范圍的最后一毫秒;
向下舍入: 一定到舍入范圍的第一毫秒.
舉例說(shuō)明:
① “gt”: " 2014-11-18||/M" —— 大于日期, 需要向上舍入, 結(jié)果是 2014-12-01T00:00:00.000
, 也就是不包含整個(gè)11月.
② “gte”: “2014-11-18||/M” —— 大于或等于日期, 需要向下舍入, 結(jié)果是 2014-11-01T00:00:00.000
, 也就是包含整個(gè)11月.
③ “l(fā)t”: “2014-11-18||/M” —— 小于日期, 需要向上舍入, 結(jié)果是2014-10-31T23:59:59.999
, 也就是不包含整個(gè)11月.
④ “l(fā)te”: “2014-11-18||/M” —— 小于或等于日期, 需要向下舍入, 結(jié)果是2014-11-30T23:59:59.999
, 也就是包含整個(gè)11月.
日期格式化范圍查詢(format)
格式化日期查詢時(shí), 將默認(rèn)使用日期field中指定的格式進(jìn)行解析, 當(dāng)然也可以通過(guò)format參數(shù)來(lái)覆蓋默認(rèn)配置.
示例:
GET website/_search
{
"query": {
"range": {
"post_date": {
"gte": "2/1/2018",
"lte": "2019",
"format": "dd/MM/yyyy||yyyy" \\這里的||表示或
}
}
}
}
注意: 如果日期中缺失了部分年、月、日, 缺失的部分將被填充為如下默認(rèn)值:
MONTH_OF_YEAR: 01
DAY_OF_MONTH: 01
HOUR_OF_DAY: 23
MINUTE_OF_HOUR: 59
SECOND_OF_MINUTE: 59
NANO_OF_SECOND: 999_999_999
如果format為 yyyy-MM
, Elasticsearch 將 2099-12
轉(zhuǎn)成 2099-12-01T23:59:59.999_999_999Z
. 沒(méi)寫全的format部分用默認(rèn)值取代。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-644353.html
參考
【官方】date數(shù)學(xué)計(jì)算
【官方】date的range查詢
【官方】format格式
Elasticsearch中如何進(jìn)行日期(數(shù)值)范圍查詢文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-644353.html
到了這里,關(guān)于Elasticsearch 時(shí)間范圍查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!