在Elastisearch索引中,我正在收集用户的评分。也就是说,在索引中
localhost:9200 / content_ratings /我们有类型为content_rating的文档。此文档类型具有以下字段:
假设我们的索引包含以下文档:
{
"title": "Data Quality", "author": "John Queue", "url": "/news/2015/data-quality", "rating":3, "ratedBy": "userA"
}
{
"title": "Data Quality", "author": "John Queue", "url": "/news/2015/data-quality", "rating":1, "ratedBy": "userB"
}
{
"title": "User Story Estimations", "author": "Abby Edye", "url": "/news/2014/story-splitting", "rating":5, "ratedBy": "userC"
}
我需要一个报告(Elasticsearch 1.0,Kibana 3),其中显示了每个已评分的项目并计算了其平均评分。因此,我们需要对“按URL分组”并具有以下内容:
"title": "Data Quality", "author": "John Queue", "url": "/news/2015/data-quality", "avgRating":2
"title": "User Story Estimations", "author": "Abby Edye", "url": "/news/2014/story-splitting", "avgRating":5
a)ES中有一种方法可以使用“分组依据”等效结构?
b)ES中是否可以查询a)(另一个)查询返回的结果? -我之所以这样问是因为,从汇总结果来看,在另一份报告(“Kibana面板”)中,我需要计算项目如何被评为好(4)或好(5)?
我是ES / kibana的新手,在经过大量搜索之后,最接近我的要求的是这些链接:
How do I group documents in elasticsearch by a single field?
https://www.elastic.co/guide/en/elasticsearch/reference/1.3/search-aggregations-metrics-top-hits-aggregation.html
我尝试了我目前的设置(ES 1.0,kibana3)隐式支持的术语facet,但距离我所需的条件还差得远……
最佳答案
是的,您可以在elasticsearch中使用“ags”执行分组操作。
我在这里有一个示例,您可以了解如何制作自己的产品:
在这里,我使用嵌套式农业(groupby)来获得每个特定年龄段的民族的平均年龄。
GET customer/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"range": {
"field": "age",
"ranges": [
{ "from": 20,"to": 40 },
{ "from": 40, "to": 60 },
{ "from": 60, "to": 100}
]
},
"aggs": {
"group_by_nationality": {
"terms": {
"field": "nationality.keyword"
},
"aggs": {
"average_age": {
"avg": {
"field": "age"
}
}
}
}
}
}
}
}
关于elasticsearch - Elasticsearch,Kibana分类/汇总文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35896269/