更快的查询过滤器,用于获取具有“最大”字段值的文档?

时间:2015-12-11 10:19:29

标签: performance elasticsearch aggregation

在Elasticsearch索引中,我的文档包含字段:fooIdfooField

我想获取具有给定fooId值但最大值fooField的文档。现在,我有一个带有像这样的聚合的过滤查询:

"aggs": {
    "topHits_agg": {
        "top_hits": {
            "sort": [{
                "fooField": {
                    "order": "desc"
                }
            }],
            size: 1
        }
    }
}

然而,表现并不好。有没有办法让这更好?

1 个答案:

答案 0 :(得分:1)

如果我理解正确您不需要aggregation,您可以直接sort fooField {/ 1}}

GET your_index/_search
{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "fooId": "your_specific_id"
        }
      }
    }
  },
  "sort": [
    {
      "fooField": {
        "order": "desc"
      }
    }
  ],
  "size": 1
}