2017-01-10 7 views
0

ElasticSearch exampleを参照して、1つのクエリに2つの日付範囲(gt/ltとgte/lte)があることはほとんど理解していません。この日付範囲のクエリの例では何が期待できますか?

gt/ltまたはgte/lteのみを使用すると、2つの日付範囲が異なるのはなぜですか?

流暢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

これは正しいです。ドキュメントは、日付を含む範囲クエリで利用可能なプロパティの単なる(考察された)例であり、 'DateMath'、' DateTime'または 'string'として値を渡すために使用できる暗黙的な変換です。 –

+0

ありがとうございます。この例に説明を追加するとよいでしょう。 – Youngjae