设置参数 `node.name` 可以自定义 Elasticsearch 节点的名字。 此条 Tips 由 medcl 贡献。

ES对多个字段聚合,select cola,colb from table group by cola,colb

Elasticsearch | 作者 mars | 发布于2017年07月26日 | 阅读数:3146

如题,JavaAPI或者DSL语法怎么写,O(∩_∩)O谢谢。
已邀请:

zhangli

赞同来自:

SearchResponse searchResponse = esClient.prepareSearch("dmp_keyword")
.setTypes("dmp_keyword_effect")
.setQuery(queryBuilders)
.addAggregation(AggregationBuilders.terms("by_keyword").field("keyword.raw")
.subAggregation(AggregationBuilders.terms("by_devicetype").field("deviceType.keyword")
// .order(Terms.Order.aggregation("sumImpNumber", false))
.subAggregation(AggregationBuilders.sum("sumImpNumber").field("impressionNumber"))
.subAggregation(AggregationBuilders.sum("sumImpCost").field("impressionCost"))
.subAggregation(AggregationBuilders.sum("sumClkNumber").field("clickNumber"))
.subAggregation(AggregationBuilders.sum("sumClkCost").field("clickCost"))
.subAggregation(AggregationBuilders.sum("sumOrderCount").field("orderCount"))
.subAggregation(AggregationBuilders.sum("sumDirectProductNum").field("directProductLineNum"))
.subAggregation(AggregationBuilders.sum("sumDirectProductAmount").field("directProductLineAmount"))
.subAggregation(AggregationBuilders.sum("sumInDirectProductNum").field("indirectProductLineNum"))
.subAggregation(AggregationBuilders.sum("sumInDirectProductAmount").field("indirectProductLineAmount"))
.subAggregation(AggregationBuilders.sum("sumInfluenceProductNum").field("influenceProductLineNum"))
.subAggregation(AggregationBuilders.sum("sumInfluenceProductAmount").field("influenceProductLineAmount"))
.subAggregation(AggregationBuilders.max("keywordId").field("keywordId"))
).size(10000000))
.get();
 

Cheetah

赞同来自:

dsl语法,刚好回答其他问题的你这里也能用{
  "query" : {
    "match_all" : { }
  },
  "aggregations" : {
    "a" : {
      "terms" : {
        "field" : "a",
        "order" : {
          "c.value" : "asc"
        }
      },
      "aggregations" : {
        "b" : {
          "terms" : {
            "field" : "b"
          }
        },
        "c" : {
          "sum" : {
            "field" : "c"
          }
        }
      }
    }
  }
}

byyuyi

赞同来自:

我试验过一种script方式的~  不过效率耗时 不知跟楼上 @Cheetah 大哥那种相比如何~
 
{
    "size" : 0,"query" : {"match_all" : {}},
    "aggs" : {
        "groupBy" : {
            "terms" : {
               "script": {
                        "inline": "doc[\"cola.keyword\"].value + doc[\"colb.keyword\"].value "
                },
                "order": {"_count": "desc"}
            }
        }
    }
}

要回复问题请先登录注册