[英]ElasticSearch: How to query a date field using an hours-range filter
[英]ElasticSearch: How to query a date field using a month & date range filter
目前,我已經知道如何從(時間戳)日期字段中過濾日期范圍。 這很簡單:
"range": {
"date": {
"gte": "2015-11-01",
"lte": "2015-11-30"
}
}
但是,如果您對基於月份的范圍感興趣,如gte:"02-22"
和lte:"03-21"
如何過濾日期? 這可能嗎?
制圖:
PUT dob
{
"mappings": {
"test":{
"properties": {
"dob":{
"type": "date",
"format": "dateOptionalTime"
}
}
}
}
}
查詢:
GET /dob/test/_search
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"range": {
"date": {
"gte": "02-11",
"lte": "03-20"
}
}
},
{
"script": {
"script": "doc.dob.date.getDayOfMonth() >= min && doc.dob.date.getMonthOfYear() <= max",
"params": {
"min": 12,
"max": 2
}
}
}
]
}
}
}
}
}
我想輸出date greater than:02-11 & less than:03-20
但我不想改變我的日期類型格式( yyyy-mm-dd
)而且我也不想搜索它串。 如果我做錯了,請讓我糾正。
您可以在日期過濾器中指定格式
"date":
{
"gte":"02-22","lte":03-20","format":"mm-dd"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.