2013-09-26 15 views
0

我正在尋找一種方法在分組列表中顯示我的構面。例如,我有一些用戶和麪按國家過濾,這給了我:elasticsearch的分組構面

  • 國家
    • 荷蘭(5)
    • 英格蘭(2)
    • 埃及(5)
    • 盧旺達(2)

以及我想擁有的是:

  • 歐洲
    • 荷蘭(5)
    • 英格蘭(2)
  • 非洲
    • 埃及(5 )
    • 盧旺達(2)

我使用的輪胎寶石Rails應用程序中,我的模型和關係是這樣的:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-option_groups_from_collection_for_select

我GOOGLE爲例對這個幾個小時,就不能找到任何嵌套/分組方面在Elasticsearch中對我有意義。希望有人能幫助我在正確的方向!提前謝謝了!

丹尼爾

+0

目前沒有辦法做到這一點。但是在未來(希望很快會成爲)ES的發佈版本中,將會有一個非常棒的聚合器模塊,能夠做到這一點。我也在等。 – DeH

+0

謝謝,是否有可能在solr?我正在開始這個項目..如果支持,可能會切換到sunsport/solr。 – Daniel

+0

對不起,我對Solr一無所知。 – DeH

回答

0

您可以通過以下兩種方式索引數據,然後就解析outout可能處理這個問題。使用「對象」版本來應用過濾器,並將解析版本作爲一個方面來顯示過濾器。

例如:

"mydocument":{ 
    "attributes":[  
     "location":{ 
     {"continent":"europe", 
     "country":"england" 
     }, 
    "fur_style":"long" 
    ], 
"facets":[ 
     {"location":"Europe##england"}, 
     {"fur_style":"long" 
    ] 
    } 

,當你得到你的數據備份,你必須:

"facets":[ 
{"location":"Europe##england", 
"total":5}, 
{"location":"africa##egypt", 
"total":7} 
{"fur_style":"long", 
"total":3} 
etc etc 
] 

在你的應用程序,你只需通過有循環,掰開使用條款##分隔符(或任何你想要的)。

+0

我也在想這樣的事情,如果現在沒有其他辦法,我想我會採取這種方法。謝謝! – Daniel

+0

太好了,我認爲它工作得很好。玩的開心! –