如何使用 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?
Elassandra / Elastic Search中的聚合,日期范围查询