Zuordnung eines assoziativen Arrays in Elasticsearch

8

Ich bin relativ neu bei elasticsearch und möchte eines meiner Felder einer associative array Struktur zuordnen.

Was ich derzeit habe:

Ein Produkt vom Typ product im Index products :

%Vor%

Wie Sie sehen können, ist das Feld interests ein assoziatives Array. Der Schlüssel ist ein User ID und der Wert ist the number of times the user talked about this product .

Dynamisches Mapping hat mir Folgendes zur Verfügung gestellt:

%Vor%

Was ich will:

Da ich viele Einträge im Feld interests haben werde, möchte ich nicht, dass das dynamische Mapping jede ID abbildet.

Die Idee ist, nach einem bestimmten user ID im Feld interests zu suchen, damit ich die Punktzahl des Ergebnisses erhöhen kann, je nachdem, wie oft dieser bestimmte Benutzer über dieses Produkt gesprochen hat.

>

Ich möchte diese Art von Struktur abbilden können.

Haben Sie eine Idee, wie Sie das erreichen können?

Danke,

    
Brice 20.02.2014, 15:56
quelle

1 Antwort

8

Sie müssen Ihre Objektdefinitionen ändern.

Es ist problematisch, Schlüssel basierend auf den tatsächlichen Werten zu haben, da dies zu einem ständig wachsenden Mapping- und damit Cluster-Zustand führt. Es wird auch zu seltsamen Suchen führen.

Dies ist eine häufig genug gestellte Frage, die ich in meinem Artikel über Fehlerbehebung einem Abschnitt gewidmet habe Elasticsearch sucht nach Anfängern .

Wahrscheinlich möchten Sie verschachtelte Dokumente oder Eltern-Kind-Beziehungen verwenden. Wenn Sie die Anzahl sehr oft aktualisieren, sollten Sie parent-child verwenden, da verschachtelte Dokumente die gesamte Sache neu indizieren. Verschachteltes Dokument wird jedoch eine schnellere Suchzeit haben, und Sie werden die Aktualisierungen wahrscheinlich sowieso irgendwie drosseln wollen.

Wenn Sie die Dokumente so strukturieren, können Sie einfach verschachtelte Zuordnungen verwenden, und Sie werden nicht mit einem Feld pro Benutzer enden.

%Vor%     
Alex Brasetvik 20.02.2014, 16:16
quelle

Tags und Links