Elasticsearch:按给定映射中的最大字段值进行过滤

时间:2017-07-08 14:44:11

标签: elasticsearch elasticsearch-aggregation

关于此Elasticsearch映射

PUT /some-index/_mapping/some-mapping
{
  "properties": {
    "group-id": {
      "type": "keyword"
    },
    "id": {
      "type": "keyword"
    },
    "some-other-field": {
      "type": "keyword"
    }
  }
}

让我们说我们有这些

这样的价值观
[
  { "group-id": "1", "id": "1", "some-other-field": "some" },
  { "group-id": "2", "id": "2", "some-other-field": "other" },
  { "group-id": "2", "id": "3", "some-other-field": "field" }
]

尝试构建查询

返回包含最大 group-id 的所有记录。在此特定示例中,它应该完全返回最后2个项目,包括 id some-other-field 。当然,最大的 group-id 可能会随着新记录的索引而变大。如果发生这种情况,则应返回一组全新的结果,因为之前的结果将不再包含最大的 group-id

1 个答案:

答案 0 :(得分:1)

如果您需要支持最大的ID,则应将字段类型更改为数字。

您可以使用max聚合首先找出最大值(如果这是一个数字字段),然后执行第二个查询,搜索具有该最大值的所有文档(不要害怕执行不止一个问题来回答你的问题,这很好。)