Jak skutecznie uzyskać maksymalny identyfikator dla jednego indeksu?Elasticsearch Jak pobrać maksymalny identyfikator?
7
A
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"} } ]
}