我正在尝试将JSON查询转换为elasticsearch查询,但我失败了。 我的查询是对数据进行分组(聚合)。
{
"aggs":{
"ResultCount":{
"terms":{
"field":"type"
},
"aggs":{
"hits":{
"top_hits":{
"_source":{
"include":[
"year",
"type"
]
}
}
}
}
}
}
}
我尝试的代码:
var result = Client.Search<ModelClass>(s => s
.Index("myIdx")
.Type("myType")
.Aggregations(a => a
.Terms("ResultCount", t => t
.Field(p => p.year)
)
)
);
尽可能帮助。先谢谢你。
答案 0 :(得分:1)
您的查询应如下所示
client.Search<ModelClass>(s => s
.Index("myIndex")
.Type("myType")
.Aggregations(a => a
.Terms("ResultCount", t => t.Field(p => p.Type)
.Aggregations(a1 => a1
.TopHits("myHits", h => h
.Source(d => d
.Includes(fd => fd
.Fields(
f1 => f1.Type,
f2 => f2.Year
)
)
)
)
)
)
)
);
hits
是保留关键字,因此我使用myHits
代替它。
此外,在您的json查询中,您有include
,我认为它应该是includes
修改: result.Aggs.Terms("ResultCount").Buckets.ToList()
的项目将具有以下结构
{
"key": 2000,
"doc_count": 1,
"myHits": {
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "myIndex",
"_type": "myType",
"_id": "AVupJZbRLWQhMqJPXgXa",
"_score": 1,
"_source": {
"year": 2000,
"type": "some type"
}
}
]
}
}