在此日期范围查询示例中我们可以期待什么?

时间:2017-01-10 06:32:39

标签: elasticsearch nest

请参阅ElasticSearch example,我很难理解它在一个查询中有两个日期范围(gt / lt和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 个答案:

答案 0 :(得分:1)

我认为这仅仅是一个教学示例,表明可以添加两个选项。实际上,查询是正确且有效的,Elasticsearch将使用外部限制(ltegte位),它将"翻译"查询这个Lucene的一个:

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