我在编写带嵌套字段的Elasticsearch查询时遇到问题。我想您可以为我提供帮助,因为我是公司中唯一使用Elastic的公司,而且我不知道如何独自解决问题。
这是我的ES文档在此索引中的外观(非常简化的版本)
{
"_index":"index_test",
"_type":"type_test",
"_id":"1",
"_score":1.0,
"_source":{
"category":1,
"value_period":[
{
"value":5.4,
"month":"2019-01"
}
],
"client_id":"80",
}
},
{
"_index":"index_test",
"_type":"type_test",
"_id":"2",
"_score":1.0,
"_source":{
"category":1,
"value_period":[
{
"value":10.0,
"month":"2019-02"
}
],
"client_id":"80",
}
}{
"_index":"index_test",
"_type":"type_test",
"_id":"2",
"_score":1.0,
"_source":{
"category":2,
"value_period":[
{
"value":20.0,
"month":"2019-02"
}
],
"client_id":"80",
}
}
这是问题: 我需要针对四个不同的用例编写4个查询:
2个简单查询:“每月总和”和“每个类别的总和”
2个查询稍微复杂一点:“每个类别的每月总和”和“每月每个类别的总和”
第3次:date_histogram聚合(在嵌套字段“ value_period.month”上),术语聚合(在“ category”字段上)和求和聚合(在value_period.value上),以便获得每个类别每个月的总和
第4个:术语聚合(在“类别”字段上),date_histogram聚合(在嵌套字段“ value_period.month”上)和求和聚合(在value_period.value上),以便每月获得每个类别的总和
对于第一种情况(每月简单值),我已经编写了查询,并且可以正常工作:
{
"aggs":{
"nested_field":{
"nested":{
"path":"value_period"
},
"aggs":{
"date_agg_interval":{
"date_histogram":{
"field":"value_period.month",
"interval":"1M",
"format":"yyyy-MM",
"min_doc_count":0
},
"aggs":{
"agg_sum":{
"sum":{
"field":"value_period.value"
}
}
}
}
}
}
}
}
对于第二种情况(每个类别的值),我尝试了此查询,但是我的汇总结果为空,我真的不知道为什么... 这是查询:
{
"aggs":{
"nested_field":{
"nested":{
"path":"value_period"
},
"aggs":{
"agg_category":{
"terms":{
"field":"category"
},
"aggs":{
"agg_sum":{
"sum":{
"field":"value_period.value"
}
}
}
}
}
}
}
}
对于第三和第四级(聚合的另一个级别),我尝试了很多方法,但是没有任何效果。
我真的要在此先感谢所有能够帮助我并考虑我的要求的人。
PS:请问我的英语水平是法语吗?
丹尼斯