【发布时间】:2020-07-21 03:56:34
【问题描述】:
我想使用 NEST API 在 Elasticsearch 中使用日期范围搜索。
当我这样搜索时它就可以工作:
.DateRange(c => c
.Name("myquery")
.Boost(1.1)
.Field(p => p.CreatedOnUtc)
.GreaterThanOrEquals(DateMath.Now.Subtract("3d")) //this works fine
.LessThanOrEquals(DateMath.Now)
.Format("dd/MM/yyyy||yyyy")
.TimeZone("+01:00")
)
但是,当我想使用自定义 fromDate 日期时间值而不是 DateMath.Now.Subtract("3d") 时,它不会返回任何内容!
我尝试了如下许多不同的代码行,但都没有奏效!
.GreaterThan(DateMath.Anchored(fromDate))
或
.GreaterThanOrEquals(DateMath.Anchored(fromDate).RoundTo(DateMathTimeUnit.Day))
或
.GreaterThan(new DateTime(2012, 01, 01, 11, 0, 0))
我的日期时间文件返回的示例 json 值为:
"createdOnUtc": "2020-04-08T15:53:36.4800870Z"
我在位于 here 的 Elasticsearch 网站上找到了相关文档/示例查询,但这对我没有帮助,这里我从文档中复制了 Object Initializer 语法示例:
new DateRangeQuery
{
Name = "named_query",
Boost = 1.1,
Field = "description",
GreaterThan = FixedDate,
GreaterThanOrEqualTo = DateMath.Anchored(FixedDate).RoundTo(DateMathTimeUnit.Month),
LessThan = "01/01/2012",
LessThanOrEqualTo = DateMath.Now,
TimeZone = "+01:00",
Format = "dd/MM/yyyy||yyyy"
}
问题与格式/时区有关还是我在这里遗漏了什么?
【问题讨论】:
标签: elasticsearch nest elastic-stack elasticsearch-dsl elasticsearch-query