如何在elasticsearch中结合top_hits和date_histogram聚合?

时间:2017-07-14 02:13:00

标签: elasticsearch elasticsearch-aggregation

我想从top_hits聚合的结果中提取日期直方图。下面的代码返回每个“myhash”的第一个“mydata”。

    {
      "aggs": {
        "agg_indexing": {
          "filter": {
            "term": {
              "_index": "myindex"
            }
          },
          "aggs": {
            "agg_class": {
              "terms": {
                "field": "myhash",
                "size": 10000
              },
              "aggs": {
                "agg_top": {
                  "top_hits": {
                    "sort": [
                      {
                        "mytime": {
                          "order": "asc"
                        }
                      }
                    ],
                    "_source": {
                      "includes": [
                        "mytime",
                        "mydata"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    }

所以我想把这个结果作为直方图。以下代码是我的意图,但它不起作用。

    {
      "aggs": {
        "agg_indexing": {
          "filter": {
            "term": {
              "_index": "y_paylog"
            }
          },
          "aggs": {
            "agg_class": {
              "terms": {
                "field": "idhash",
                "size": 10000
              },
              "aggs": {
                "agg_top": {
                  "top_hits": {
                    "sort": [
                      {
                        "logtime": {
                          "order": "asc"
                        }
                      }
                    ],
                    "_source": {
                      "includes": [
                        "logtime",
                        "pay"
                      ]
                    }
                  },
                  "aggs": {
                    "hist_over_date": {
                      "date_histogram": {
                        "field": "mytime",
                        "interval": "24h"
                      },
                      "aggs": {
                        "revenue_sum": {
                          "sum": {
                            "field": "mydata"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }

我认为必须有另一种方法来调用变量,而不是“mydata”。

提前致谢。

++

    {
      "size": 0,
      "aggs": {
        "agg_indexing": {
          "filter": {
            "term": {
              "_index": "y_paylog"
            }
          },
          "aggs": {
            "agg_class": {
              "terms": {
                "field": "idhash",
                "size": 10000
              },
              "aggs": {
                "agg_hist": {
                  "date_histogram": {
                    "field": "logtime",
                    "interval": "24h"
                  },
                  "aggs": {
                    "agg_top": {
                      "top_hits": {
                        "sort": [
                          {
                            "logtime": {
                              "order": "asc"
                            }
                          }
                        ],
                        "_source": {
                          "includes": [
                            "logtime",
                            "pay"
                          ]
                        },
                        "size": 1
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }

0 个答案:

没有答案