私はESで検索エンジンをやっています。私はタイプ "webContent"と2つのサブタイプ "htmlDocuments"、 "textDocuments"を持っています。 webcontentには、title、date_of_creationなどのフィールドがあります。htmlDocumentsおよびtextDocumentsにはcontenttext、urlなどのフィールドがあります。親と子のIDは同じです。Elasticsearch:NESTで同じクエリで親子を取得
NESTで検索すると、親と子が必要です。すべての子(htmlDocumentsまたはtextDocuments)には、Webcontent型の親があります。また、すべてのWebContentにはhtmlDocumentsまたはtextDocumentsタイプの子が1つしかありません。だから、私のクエリは次のとおりです:
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例えば、私はタイトルが単語「大学」を含むテキスト文書を検索します。両親と子供の両方を返すことは可能ですか?または別のクエリを実行せずに親を取得する方法?私は今のように2つの質問を避けたい:
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)));
ありがとう。
を使用すると、1つに、親/子の平坦化を検討しました各親が子供を1人しか持たないことを前提としていますか? –
はい、私は考えましたが、これはSQLデータベースを持つ別の検索エンジンで今使用している構造です。 –
あなたはこれを理解したことがありますか?私は例を見つけることができないようです。 –