我是ElasticSearch的新手。我想在asp.net中使用NEST编写一个简单的聚合查询。如何编写这个简单的查询
GET /_search
{
"aggs" : {
"genres" : {
"terms" : { "field" : "genre" }
}
}
}
我开始了这样的事情:
var response = _connection.Get<ElasticClient>().Search<JObject>(s =>
{
}
谢谢
答案 0 :(得分:0)
开始写评论,但也许我们可以将其作为答案:)
Here是用于使用NEST语法编写聚合的文档。
如示例所示,对于此示例聚合:
{
"aggs": {
"name_of_child_agg": {
"children": {
"type": "commits"
},
"aggs": {
"average_per_child": {
"avg": {
"field": "confidenceFactor"
}
},
"max_per_child": {
"max": {
"field": "confidenceFactor"
}
},
"min_per_child": {
"min": {
"field": "confidenceFactor"
}
}
}
}
}
}
您可以编写以下NEST流利代码:
s => s
.Aggregations(aggs => aggs
.Children<CommitActivity>("name_of_child_agg", child => child
.Aggregations(childAggs => childAggs
.Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor))
.Max("max_per_child", avg => avg.Field(p => p.ConfidenceFactor))
.Min("min_per_child", avg => avg.Field(p => p.ConfidenceFactor))
)
)
)
此外,我不认为您想将JObject
类型用作POCO,this应该阐明如何使用自定义类型将c#类映射为elasticsearch类型。背后的原因:让类型仅负责与Elasticsearch进行“通信”,所以让JObject
担任此角色可能不是最佳选择,因为它不是您创建的类型,并且将来可能会以这种方式发展你不要。