我正在使用ES做搜索引擎。我有類型「webContent」和兩個子類型,「htmlDocuments」,「textDocuments」。 webContent有標題,date_of_creation等字段htmlDocuments和textDocuments類型有像contenttext,url等字段。父和子id是相同的。Elasticsearch:使用NEST獲取父級和子級相同的查詢
當我在NEST搜索,我想有父母和孩子。每個孩子(htmlDocuments或textDocuments)都有一個父類型Webcontent。而且,每個WebContent只有一個htmlDocuments或textDocuments類型的子元素。例如,我要搜索一個文本文件,其中標題包含單詞「大學」:那麼,我的查詢是:
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"))))
));
所以,這回textDocuments。是否有可能返回父母和孩子?或者讓父母不做另一個查詢的方法?我想避免像我現在正在做的兩個查詢:
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)));
謝謝。
你考慮壓扁父/子成一個文件,鑑於每個家長只有一個孩子? –
是的,我認爲,但這是我現在用另一個帶有SQL數據庫的搜索引擎使用的結構。 –
你有沒有想過這個?我似乎無法找到一個例子。 –