如何使用 NEST 构造记录的聚合(计数)?
How to construct Aggregation (Count) of records using NEST?
我需要使用 NEST 包装器执行记录聚合(计数),但要在 NEST 内触发 DSL 查询。
因为我不知道如何正确构建它,所以我使用 LINQ 方法做了同样的事情。
ISearchResponse<AgencyDetailReportModel> searchResponse = ConnectionToESClient().Search<AgencyDetailReportModel>
(s => s
.Index("accountsdata")
.From(0)
.Size(15000)
.Query(q =>
q.MatchAll()
)
);
var allocatedAgencies = agencySearchResponse.Documents.Where(w => !string.IsNullOrEmpty(w.agencyid)).Count();
var unAllocatedAgencies = agencySearchResponse.Documents.Where(w => string.IsNullOrEmpty(w.agencyid)).Count();
如何在 NEST 中构建 DSL 查询?
所以对于你的问题,你需要 allocatedAgencies count 和 unAllocatedAgencies count right.We 可以通过简单的查询而不是去实现用于聚合。
var searchResponse = await highLevelClient.CountAsync<accountsdata>(s => s
.Index("accountsdata")
.Query(q => q
.ConstantScore(c => c
.Filter(f => f
.Bool(b => b
.MustNot(m => m
.Exists(e => e.Field("agencyid"))))))));
这是针对 unAllocatedAgencies 计数和针对 allocatedAgencies 的查询。
var searchResponse = await highLevelClient.CountAsync<accountsdata>(s => s
.Index("accountsdata")
.Query(q => q
.ConstantScore(c => c
.Filter(f => f
.Bool(b => b
.Must(m => m
.Exists(e => e.Field("agencyid"))))))));
如果您遇到任何问题,请告诉我,它最多可以解决您的上述问题。谢谢
我需要使用 NEST 包装器执行记录聚合(计数),但要在 NEST 内触发 DSL 查询。
因为我不知道如何正确构建它,所以我使用 LINQ 方法做了同样的事情。
ISearchResponse<AgencyDetailReportModel> searchResponse = ConnectionToESClient().Search<AgencyDetailReportModel>
(s => s
.Index("accountsdata")
.From(0)
.Size(15000)
.Query(q =>
q.MatchAll()
)
);
var allocatedAgencies = agencySearchResponse.Documents.Where(w => !string.IsNullOrEmpty(w.agencyid)).Count();
var unAllocatedAgencies = agencySearchResponse.Documents.Where(w => string.IsNullOrEmpty(w.agencyid)).Count();
如何在 NEST 中构建 DSL 查询?
所以对于你的问题,你需要 allocatedAgencies count 和 unAllocatedAgencies count right.We 可以通过简单的查询而不是去实现用于聚合。
var searchResponse = await highLevelClient.CountAsync<accountsdata>(s => s
.Index("accountsdata")
.Query(q => q
.ConstantScore(c => c
.Filter(f => f
.Bool(b => b
.MustNot(m => m
.Exists(e => e.Field("agencyid"))))))));
这是针对 unAllocatedAgencies 计数和针对 allocatedAgencies 的查询。
var searchResponse = await highLevelClient.CountAsync<accountsdata>(s => s
.Index("accountsdata")
.Query(q => q
.ConstantScore(c => c
.Filter(f => f
.Bool(b => b
.Must(m => m
.Exists(e => e.Field("agencyid"))))))));
如果您遇到任何问题,请告诉我,它最多可以解决您的上述问题。谢谢