2014-07-15 1 views

Odpowiedz

3

Chcesz uzyskać najlepsze _id dla typu?

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

Przetestowałem to zapytanie w wersji 1.4.2. Powinien działać z dowolnym odwzorowaniem, ponieważ właśnie sortujesz wbudowany identyfikator ElasticSearch. Jeśli używasz własnego pola identyfikatora, może ono działać lub nie, w zależności od mapowania. Wypróbuj to i daj mi znać, jak to działa.

zakładając Twój typ nazywany fruit:

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

Można również użyć Max Aggregation (od 1.3), aby uzyskać maksymalną wartość danego pola w dokumencie.

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

Wrócimy:

{ 
    "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 
    } 
    } 
} 

W moim przypadku maksymalna id jest .

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