2016-07-15 60 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

您是否考慮過親子關係?

Parent-Child Docs

收錄這樣你可以用下面的

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

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

我該如何索引這個字符串,以便我可以使用這種查詢? – Chandra

1

查詢,我不認爲有一個開箱即用的方式做到這一點在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
  • 查詢 'A' 兒童:在根

    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 } } } }

希望我已成功地幫助! :)