gpt4 book ai didi

.net - .Net Nest中的ElasticSearch过滤器聚合

转载 作者:行者123 更新时间:2023-12-03 01:54:22 25 4
gpt4 key购买 nike

我正在尝试通过Nest 2.3.2对ElasticSearch运行以下Filter Aggregation查询。

GET workitems_v2/mail/_search
{
size:0,
"aggs" : {
"AutoComplete" : {
"filter" : { "match": { "claimData.claimOwner":"dav" } },
"aggs": {
"Suggestions": {
"terms": {"field":"claimData.claimOwner.raw"}
}
}
}
}
}

这就是我在Nest(VB.Net)中拥有的-请注意第二个Aggregations()函数是Filter()函数的子级。
Dim queryResults = elasticClient.Search(Of Mail)(Function(s) s.
Size(0).
Aggregations(Function(a) a.
Filter("AutoComplete", Function(f) f.
Filter(Function(ff) ff.
Match(Function(m) m.
Field("claimData.claimOwner").
Query("dav")
)
).
Aggregations(Function(aa) a.
Terms("Suggestions", Function(t) t.
Field("claimData.claimOwner.raw")
)
)
)
)
)

但是Nest生成的查询如下所示:
POST /workitems_v2/mail/_search
{
"size" : 0,
"aggs" : {
"Suggestions" : {
"terms" : {
"field" : "claimData.claimOwner.raw"
}
},
"AutoComplete" : {
"filter" : {
"match" : {
"claimData.claimOwner" : {
"query" : "dav"
}
}
}
}
}
}

...这没有给我我想要的东西。我如何告诉Nest“建议”聚合是第一个过滤器聚合的一部分?

最佳答案

您的查询不太正确;子聚合应该使用作为匿名函数中AggregationContainerDescriptor<T>的参数传递的aa

Dim queryResults = elasticClient.Search(Of Mail)(Function(s) s.
Size(0).
Aggregations(Function(a) a.
Filter("AutoComplete", Function(f) f.
Filter(Function(ff) ff.
Match(Function(m) m.
Field("claimData.claimOwner").
Query("dav")
)
).
Aggregations(Function(aa) aa.
Terms("Suggestions", Function(t) t.
Field("claimData.claimOwner.raw")
)
)
)
)

导致
{
"size": 0,
"aggs": {
"AutoComplete": {
"filter": {
"match": {
"claimData.claimOwner": {
"query": "dav"
}
}
},
"aggs": {
"Suggestions": {
"terms": {
"field": "claimData.claimOwner.raw"
}
}
}
}
}
}

关于.net - .Net Nest中的ElasticSearch过滤器聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37748583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com