2016-07-15 12 views
1

私はelasticsearchでインデックスを作成するファイルパスに似たデータを持っています。 (区切り文字で区切られたトークンの基本的リスト)弾性検索で階層データのインデックスを作成するにはどうすればよいですか?

Ex data: 
a/b/c/d/e 
a/b/c/ 
a/m/n 
x/y/z 

I指数たら、私は、以下のように与えられたトークンのための直接の子を取得するために照会することができるはずです。

For prefix of a, immediate children are [b, m] 
For prefix of x, immediate children are [y] 
Also tokens at root would be [a,x] 

答えて

1

あなたは親子関係を考えましたか?あなたは以下の

{ 
    "query": { 
    "has_parent": { 
    } 
} 

{ 
    "query": { 
    "has_child": { 
    } 
} 
+0

この種類のクエリを使用するには、この文字列をどのようにインデックスする必要がありますか? – Chandra

1

で照会することができるだろうなどとしてインデックス

Parent-Child Docs

私はあなたのようElasticsearchでそれを行うための箱の方法のうちがあるとは思いません自分で階層をモデル化する必要があります。

  • インデックスデータ:

    POST index/type/id1 { "a":["b","c","d","e"] }

    POST index/type/id2 { "a":["b","c"] }

    POST index/type/id3 { "a":["m","n"] }

    POST index/type/id4 { "x":["y","z"] }

  • 一つの方法は、あなたの例によると、それを行うには210
  • クエリ '' 子供:ルートに

    POST index/type/_search { "size":0, "aggs": { "paths": { "terms": { "field": "a", "size": 0 } } }

  • クエリトークン。応答では「_」せずにキーを探します。

    POST index/type/_search { "size":0, "aggs": { "Field names": { "terms": { "field": "_field_names", "size": 0 } } } }

ホープ私は助けるために管理しています! :)

関連する問題