目前,我已经知道如何从(时间戳)日期字段中筛选日期范围。这很简单:
"range": {
"date": {
"gte": "2015-11-01",
"lte": "2015-11-30"
}
}
但是当你对基于月份的范围感兴趣时,比如gte:"02-22"
和lte:"03-21"
,如何过滤日期呢?这可能吗?
Map:
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
),我也不想搜索它的字符串。如果我做错了什么,请让我纠正。
1条答案
按热度按时间v1uwarro1#
您可以在日期筛选器中指定格式,如