【问题标题】:Date Range search using NEST doesn't return data使用 NEST 进行日期范围搜索不返回数据
【发布时间】: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


    【解决方案1】:

    当在请求中指定Format = "dd/MM/yyyy||yyyy" 时,Elasticsearch 期望接收其中一种格式的 DateTime 字符串,并将使用提供的格式尝试将 DateTime 字符串解析为 DateTime 内的有效实例弹性搜索。

    DateMath.Anchored(fromDate)
    

    new DateTime(2012, 01, 01, 11, 0, 0)
    

    客户端将serialize these to an ISO8601 DateTime string representations,因此这些值的输入与请求中提供的格式不匹配。

    查看上面的第一个示例,您似乎不需要为Format 指定值。当没有指定格式时,Elasticsearch 将使用CreatedOnUtcdate 字段映射中指定的格式,如果没有,将使用the default "strict_date_optional_time||epoch_millis" format for date types,它将解析客户端生成的 ISO8601 日期字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      相关资源
      最近更新 更多