ElasticSearch Max of Max?

时间:2017-02-01 07:29:17

标签: elasticsearch

我需要搜索最大时间(最近的条目),我想要一个具有最大值的最大条目。 我在聚合上尝试了各种类型的嵌套,使用过滤器等。但它似乎没有成功。有什么帮助吗?

示例: -

映射 -

{
  "trytime": {
    "mappings": {
      "value": {
        "properties": {
          "time": {
            "type": "long"
          },
          "value": {
            "type": "long"
          }
        }
      }
    }
  }
}

值: -

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 4,
    "max_score": 1,
    "hits": [
      {
        "_index": "trytime",
        "_type": "value",
        "_id": "2",
        "_score": 1,
        "_source": {
          "time": 9,
          "value": 5
        }
      },
      {
        "_index": "trytime",
        "_type": "value",
        "_id": "4",
        "_score": 1,
        "_source": {
          "time": 6,
          "value": 10
        }
      },
      {
        "_index": "trytime",
        "_type": "value",
        "_id": "1",
        "_score": 1,
        "_source": {
          "time": 9,
          "value": 6
        }
      },
      {
        "_index": "trytime",
        "_type": "value",
        "_id": "3",
        "_score": 1,
        "_source": {
          "time": 9,
          "value": 9
        }
      }
    ]
  }
}

我需要与此时间相对应的最大时间和最大值(将有多个值对应于特定时间)。

查询: -

GET /trytime/_search
{
  "size": 0,
  "aggs":{
    "max_Value": {
      "max": {
        "field": "value"
      }
    }
  },
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "time": {
              "gte": ___NEED-MAX-TIME-VALUE-HERE___
            }
          }
        }
      ]
    }
  }

}

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,这个嵌套聚合应该为您提供3次最新时间,并且每次获得最大值。如果只需要一个结果,请将大小设置为1。

_TABLE_SUFFIX

我不确定这是否也可以通过日期直方图聚合来实现。