簡體   English   中英

ElasticSearch:如何使用月份和日期范圍過濾器查詢日期字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM