2016-06-30 21 views
0


私は弾性の再帰的検索をスクリプトしようとしています。 iは、検索テンプレートがある知っているが、私は一つだけ関係を持っているなら、私は、グラフデータベースのために行くためにこれがなくなりシナリオストアドプロシージャ検索弾性検索

`ex:-father= neo 
    1.search in person-index documents for father attribute 
    2.if father=neo return direct,else(here father=ted) 
    3.search for ted now and check if father=neo return indirect 
    or repeat step 3 till script find's ancestor if not found return not related when reached father = some constant like (pre-genator or ancient) 
    ` 

の下のような例を見つけることではないのです。 「neo」のすべての死亡原因を見つけるような別のシナリオ

答えて

2

現時点では、elasticsearchで説明していることを正確に行う機能はありません。

祖先世代の数が限られており、1対多の関係として表現できる場合は、複数のhas_parentクエリを使用できます。

また、可能であれば、与えられたレコードのすべての祖先のデータとストア名を1つのフィールドに非正規化することができます。したがって、レコードは次のようになります。

{ 
    "father": "neo", 
    "ancestors": ["neo", "ted", ... ] 
} 

それ以外の場合は、elasticsearch以外で検索する必要があります。

+0

私はそのシナリオを考えていましたが、問題はデータを維持することです。 – Fryder