2017-01-10 36 views
0

參考ElasticSearch example,我難以明白,它具有兩個日期範圍(GT /公升和GTE/LTE)轉換成一個查詢。我們可以期待在此日期範圍內查詢示例是什麼?

爲什麼它給出兩個日期範圍,當我們只使用GT/LT或GTE/LTE,這可能是不同的?

流利DSL例

q 
.DateRange(c => c 
    .Name("named_query") 
    .Boost(1.1) 
    .Field(p => p.Description) 
    .GreaterThan(FixedDate) 
    .GreaterThanOrEquals(DateMath.Anchored(FixedDate).RoundTo(TimeUnit.Month)) 
    .LessThan("01/01/2012") 
    .LessThanOrEquals(DateMath.Now) 
    .Format("dd/MM/yyyy||yyyy") 
    .TimeZone("+01:00") 
) 

例JSON輸出。

{ 
    "range": { 
    "description": { 
     "_name": "named_query", 
     "boost": 1.1, 
     "format": "dd/MM/yyyy||yyyy", 
     "gt": "2015-06-06T12:01:02.123", 
     "gte": "2015-06-06T12:01:02.123||/M", 
     "lt": "01/01/2012", 
     "lte": "now", 
     "time_zone": "+01:00" 
    } 
    } 
} 

回答

1

我相信這只是一個說教的例子,顯示有可能增加這兩個選項。在現實中,查詢是正確的,有效的和Elasticsearch將使用外部界限(該ltegte位),它會「翻譯」是查詢到這個Lucene的一個:

description:[2015-06-06T12:01:02.123||/M TO now]^1.1 
+0

這是正確的;文檔是關於一系列查詢與日期可用屬性的只是一個(人爲)例如,和可用的隱式轉換到值 –

+0

由於全部通過如'DateMath','DateTime'或'string'。將示例添加說明會很好。 – Youngjae