大型Web應用程序搜索提供了一個「全球性」的搜索,從各種指標全文結合數據(這將是SQL表),以提供其分值排序組合的搜索結果。因此,可以說,你有視頻,博客文章和用戶,那麼當你輸入「家」到搜索可能產生這樣的結果(按分數排序):多指數ElasticSearch(輪胎)
- 我家(博客文章)
- 家鄉(用戶)
- 我想回家(視頻)
有誰知道如何使用ElasticSearch執行這樣的組合搜索?最好使用Rails的Tire gem,但原始的ElasticSearch JSON數據也可以工作。
謝謝。
大型Web應用程序搜索提供了一個「全球性」的搜索,從各種指標全文結合數據(這將是SQL表),以提供其分值排序組合的搜索結果。因此,可以說,你有視頻,博客文章和用戶,那麼當你輸入「家」到搜索可能產生這樣的結果(按分數排序):多指數ElasticSearch(輪胎)
有誰知道如何使用ElasticSearch執行這樣的組合搜索?最好使用Rails的Tire gem,但原始的ElasticSearch JSON數據也可以工作。
謝謝。
關於輪胎,有一個重要的區別:你使用它單機或在ActiveRecord的/集成加載ActiveModel。
在前一種情況下,只是對搜索多個索引,Tire.search ['indexA', 'indexB'] do ... end
。或者搜索整個羣集,Tire.search do ... end
(相當於curl 'http://localhost:9200/_search?q=*'
)。
在後一種情況下,輪胎目前不能很好地處理多模型搜索。注意這個拉取請求:https://github.com/karmi/tire/pull/218 - 使用此修補程序構建您的寶石,並幫助測試解決方案。
UPDATE
電流輪胎(> 0.4)可以加載多個模型實例就好了。例如,請參閱integration test。
我敢肯定的是,http://127.0.0.1:9200/_search端點會做的伎倆爲您服務。我的數據超過99%都在一個索引中,所以我很難在這裏爲您驗證。
此外,檢查出的多搜索端點:http://www.elasticsearch.org/guide/reference/api/multi-search.html
什麼是從把大部分數據到一個單一的ES指數的好處/缺點?搜索絕對更容易,更簡單,但有什麼缺點? – raffian 2013-06-21 15:00:41
有時只有一個單一索引是不可行的。有時你只是預先錯誤地計算了碎片數量,創建一個新索引要比將所有東西再次索引到另一個索引更快。 – 2013-12-22 02:02:11
直接從寶石所有者回復:)非常感謝! 是的,我正在使用它與ActiveRecord。在最壞的情況下,我將只設置:load => false,以便它不會產生任何ActiveRecord對象。 – matsko 2012-03-06 15:32:32
是的,在沒有':load'的情況下,您將返回「彈性」模型「Tire :: Results :: Item」實例。但是,多模型搜索是我們應該支持的,我喜歡#218的補丁。 – karmi 2012-03-07 07:56:18