Ich mache eine Suchmaschine mit ES. Ich habe den Typ "webContent" und zwei Untertypen, "htmlDocuments", "textDocuments". webContent hat Felder wie title, date_of_creation usw. htmlDocuments und textDocuments Typen haben Felder wie contenttext, url usw. Die Eltern- und Kind-ID sind identisch.Elasticsearch: Holen Eltern und Kind in derselben Abfrage mit NEST
Wenn ich in NEST suche, möchte ich Eltern und Kind haben. Jedes untergeordnete Element (htmlDocuments oder textDocuments) hat ein übergeordnetes Element vom Typ Webcontent. Außerdem hat jeder WebContent nur ein Kind vom Typ htmlDocuments oder textDocuments. Zum Beispiel möchte ich ein Textdokument suchen, wo Titel das Wort „Universität“ enthalten: Also, meine Frage ist:
var child = client.Search<textDocuments>(s => s
.Query(q => q
.HasParent<webContent>(c => c
.Query(cq => cq.MatchPhrasePrefix(m => m.Field(p => p.title).Query("university"))))
));
Also, diese Rückkehr Textdokumente. Ist es möglich, Eltern und Kinder zurückzugeben? Oder eine Möglichkeit, die Eltern ohne eine andere Abfrage zu bekommen? Ich möchte vermeiden, zwei Abfragen wie ich gerade tun:
var hits = resul.Hits.ToList();
// for i = 0 until hits.count:
var parent = client.Search<webContent>(b => b
.Query(q => q
.Term(tx => tx.id, child.hits[i].Parent)));
Vielen Dank.
Hielten Sie Abflachung Eltern/Kind in einem Dokument, gegeben jedem Elternteil hat nur ein Kind? –
Ja, ich dachte es, aber das ist die Struktur, die ich jetzt mit einer anderen Suchmaschine mit einer SQL-Datenbank verwende. –
Haben Sie das jemals herausgefunden? Ich kann kein Beispiel finden. –