如何使用 Nest 客户端将日期范围应用于聚合查询

Posted

技术标签:

【中文标题】如何使用 Nest 客户端将日期范围应用于聚合查询【英文标题】:How to apply date range to a aggregation query using Nest client 【发布时间】: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)
                )
            )
        )
 )

``

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何使用 Nest 客户端将日期范围应用于聚合查询的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Nest 将查询列表传递给 ElasticSearch?

SQL Server 在日期范围内聚合

Elassandra / Elastic Search中的聚合,日期范围查询

如何将firebase时间戳与graphql nest js一起使用?

c# ElasticSearch NEST 聚合:分组

SQL DB2 如何将日期变量应用于内部查询?