【问题标题】:How to apply date range to a aggregation query using Nest client如何使用 Nest 客户端将日期范围应用于聚合查询
【发布时间】:2021-08-10 17:49:44
【问题描述】:

我正在使用 Nest 客户端构建聚合查询并能够从弹性搜索中获取结果。

我尝试将日期范围添加到查询中,如下所示。但是在添加日期范围时,Nest 调用变得无效。 关于如何添加日期范围的任何建议

``

var t = client.Search<USJob>(s => s
    .Query(q => q
     .Bool(b => b
     .Filter(f => f
      .Terms(t => t
     .Field("RuleID")
      .Terms(aggField)
       ), f => f
       .Range(dr => dr
        .Field(f => f.jobdate)
        .GreaterThanOrEquals(20200801)
                )
            )
        )
 )

``

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    尝试使用示例代码:

                var query = new QueryContainerDescriptor<USJob>()
                .Bool(b => b.Filter(f => f.DateRange(dt => dt
                                           .Field(field => field.jobdate)
                                           .GreaterThanOrEquals(birthdate)
                                           .LessThanOrEquals(birthdate)
                                           .TimeZone("+00:00"))));
    

    使用 TimeZone 并限制 LessThanOrEquals 以不返回所有索引数据非常重要。

    并通过 QueryContainerDescriptor 分隔您的查询,这样很容易发现任何不一致之处。

    参考:https://github.com/hgmauri/elasticsearch-with-nest/blob/master/src/Sample.Elasticsearch.Domain/Applications/ActorsApplication.cs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多