2013-04-04 23 views
5

Sto usando il seguente per ordinare i documenti in Elasticsearch che hanno una proprietà 'nomi utente assegnati'. usernamesAssigned è un array di stringhe:Ordinamento su una serie di stringhe in ElasticSearch

"sort": [ 
    { 
     "_script": { 
      "script": "doc["usernamesAssigned"].values.sort().join()", 
      "type": "string", 
      "lang": "js", 
      "order": "asc" 
     } 
    } 
] 

Mi chiedo se c'è un modo più efficace per farlo senza l'utilizzo di ordinamento basata su script?

risposta

3

Questa è una vecchia questione, ma di recente ho vagato attraverso di esso durante il tentativo di risolvere lo stesso problema ...

Secondo il documentation:

elasticsearch supporta l'ordinamento per array o più valori campi. L'opzione di modalità controlla quale valore dell'array viene selezionato per ordinare il documento a cui appartiene.

Così, si dovrebbe essere in grado di risolvere in questo modo:

"sort" : [ {"usernamesAssigned" : {"order" : "asc", "mode" : "min"}} ]

Questo è stato reso disponibile a partire dalla versione 0.90.0.Beta1.

Problemi correlati