我正在使用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数据库的搜索引擎使用的结构。 –
你有没有想过这个?我似乎无法找到一个例子。 –