我是ES的新手,并且正在使用嵌套聚合。 这是我的伪数据对象([这里是我的数据对象] [1] [1]:https://i.stack.imgur.com/X7oaM.png)。我只是想从“现代”领域中获得最低成本。
我已阅读以下有关我要解决的问题的文章。他们都没有帮助我解决问题
-Elastic Search 6 Nested Query Aggregations
-https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html
-https://madewithlove.be/elasticsearch-aggregations/
-https://iridakos.com/tutorials/2018/10/22/elasticsearch-bucket-aggregations.html
-https://github.com/elastic/elasticsearch/issues/9317
而且,我已经搜索了所有的stackoverflow,但都没有成功(是,我尝试了几乎所有遇到的没有成功的解决方案)。
根据文档和以上文章以及更多内容,嵌套聚合应按以下方式运行:
GET /loquesea/_search
{
"size": 0,
"aggs": {
"modern_costs": {
"nested": {
"path": "modern"
},
"aggs": {
"min_cost": {
"min": {
"field": "modern.cost1"
}
}
}
}
}
}
但是,完成后,我得到的是:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"modern_costs" : {
"doc_count" : 0
}
}
}
我已经花了几个小时试图做一个基本的嵌套聚合工作。我在做什么错了?
答案 0 :(得分:0)
问题解决了。事实证明,由于我没有在映射中将“汽车”的类型声明为“嵌套”,因此嵌套聚合将无法工作。原因是在Elastic Search中,由于未将类型声明为“嵌套”,因此ES会将“汽车”视为对象。