2014-05-19 10 views
11

Ho una raccolta di documenti con ID di esecuzione numerica univoci e voglio trovare il documento con l'ID di esecuzione più alta.Query singola per trovare il documento con il valore più grande per alcuni campi

Posso fare due domande.

In primo luogo, posso trovare il più alto ID Run:

{ 
    "size": 0, 
    "aggregations": { 
     "latest_run_id": { 
     "aggregations": { 
      "latest_run_id": { 
      "max": {"field": "run_id"} 
      } 
     } 
     } 
    } 
} 

In secondo luogo, può trovare il documento con quella routine di identificazione:

{ 
    "filter": { 
     {"term": {"run_id": latest_run_id}} 
    } 
} 

C'è un modo per farlo con una domanda singola?

+0

Per quale scopo vuoi recuperare il più grande id? Forse per impostare il prossimo ID disponibile per un nuovo documento? –

risposta

19

È possibile ottenere questo risultato combinando "sort" e "dimensioni":

`{ 
    "filter" : { 
    "match_all" : { } 
    }, 
    "sort": [ 
    { 
     "run_id": { 
     "order": "desc" 
     } 
    } 
    ], 
    "size": 1 
}` 

Ciò restituirà il record con il più alto run_id

+0

Come possiamo ottenere questo utilizzando l'API java? –

Problemi correlati