Elasticsearch如何检索最大ID

时间:2014-07-15 12:30:51

标签: elasticsearch

如何有效地检索一个类型索引的最大ID?

4 个答案:

答案 0 :(得分:9)

您还可以使用Max Aggregation(自1.3开始)获取文档中给定字段的最大值。

curl localhost:9200/myindex/mytype/_search -d
  '{
    "aggs" : {
      "max_id" : {
        "max" : { 
          "field" : "id"
        }
      }
    },
    "size":0
  }'

将返回:

{
  "took":7,
  "timed_out":false,
  "_shards": {
    "total":6,
    "successful":6,
    "failed":0
  },
  "hits": {
    "total":22,
    "max_score":0.0,
    "hits": []
  },
  "aggregations": {
    "max_id": {
      "value": 27.0
    }
  }
}

在我的情况下,最大ID为 27

答案 1 :(得分:4)

你想获得一个类型的顶级_id?

{
  "fields": [
    "_id"
  ],
  "query": {
    "match_all": {}
  },
  "sort": {
    "_id": "desc"
  },
  "size": 1
}

答案 2 :(得分:3)

我在1.4.2上测试了这个查询。它应该适用于任何映射,因为您只是对内置的ElasticSearch ID进行排序。如果您使用自己的id字段,它可能会或可能不会起作用,具体取决于您的映射。试试这个,让我知道它是如何工作的。

假设您的类型名为fruit

{
  'filter': {
    'type' : {
      'value' : 'fruit'
    }
  },
  'sort': {
    '_id': {
      'order': 'desc'
    }
  },
  'size': 1
}

答案 3 :(得分:1)

{
  "fields": [
    "_uid"
  ],
  "query": {
    "match_all": {}
  },
"size": 1,
"sort": [ { "_uid" : { "order" : "desc"} } ]
}