2017-10-23 1 views
0

Ich habe Produkte, die zu einer vorbestellten Liste gehören könnten. Jedes Produkt wurde mit folgenden Struktur indiziert:Elastische Sortierung nach einem bestimmten verschachtelten Artikel

product:{"id":123, "lists": [{"id":2,"position":4},{"id":6,"position":1}]} 

I Produkte mit Kriterien lists.id == 2 aufgelistet werden soll und das funktioniert gut.

Wie sortiere ich in Elastic Suche Abfrage nach Position in der Liste, so dass die Position der angegebenen Liste ID verwendet wird? Die geschachtelte Sortierung hilft nicht, da ich nicht definieren kann, welche der verschachtelten Elemente ich zum Sortieren verwenden möchte.

https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html

Im Moment arbeite ich mit script_score am Experimentieren, aber nicht zu viel Fortschritt gibt.

Es ist auch möglich, die Struktur des Mappings zu ändern.

+0

Bedeutet, dass Sie nach 'ID' sortieren möchten? –

+0

Bit mehr Beispiel hinzugefügt. –

Antwort

-1

Wie pro meinem Verständnis von Position Sortierung:

var dataList = {"lists": [{"id":2,"position":4},{"id":6,"position":1}]} 
 
dataList.lists.sort(function(a,b){ 
 
\t return a.position - b.position; 
 
}) 
 

 
console.log(dataList);

+1

Wie funktioniert das in Elasticsearch? –

0

Okay, sieht aus wie ich einen Fehler in meiner Mappings hatte. Es fehlte der erforderliche "Typ": "verschachtelt" für die Liste und daher funktionierte die verschachtelte Sortierung nicht.

Verwandte Themen