2015-11-17 32 views
0

如何從關係數據庫轉換查詢條件,如:Elasticsearch - 使用建議者和其他過濾器搜索條件的最佳方式是什麼?

select ... from ... where name like 'ABC%' and grade = 3 and city = 'Munich'

要ElasticSearch查詢字符串?

name like 'ABC%'是前綴搜索,我更喜歡使用Completion Suggester。雖然它似乎無法將其他過濾器添加到Completion Suggester。如何處理grade = 3 and city = 'Munich'條件?

Context Suggester並沒有幫助,因爲gradecity選項太多了。

+0

簡單的bool查詢有什麼問題? – ChintanShah25

+0

@ ChintanShah25'bool'查詢可以處理「con_1 AND con_2 AND con_3」,但是如何處理'like'ABC%''?我只知道'完成建議器'可以處理'像'ABC%'案例。但我不知道如何將'Completion Suggester'結合到'bool'查詢中。 – coderz

回答

1

這個查詢如何?

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match": { 
      "city": "Munich" 
      } 
     }, 
     { 
      "term": { 
      "grade": { 
       "value": "2" 
      } 
      } 
     }, 
     { 
      "match_phrase_prefix": { 
      "name": "abc" 
      } 
     } 
     ] 
    } 
    } 
} 

我想你可以模擬SQL像match_phrase_prefix

這是否幫助?

+0

真棒,它的作品!看起來'match_phrase_prefix'似乎與'Completion Suggester'具有非常相似的功能。雖然我想知道性能是否比'完成建議'更糟糕,因爲'Completion Suggester'在內存中構建FST(在我的情況下,性能不是非常關鍵,我只想更多地瞭解這2個:) – coderz

+0

' Completion Suggester'用於提供自動完成功能,因此如果用戶在搜索框中鍵入_fe_,則可以給_federer_,_fedex_作爲選項。而'match_phrase_prefix'是一種'match'查詢,當你想在你的情況下查找帶有某些前綴的字符串時使用。 – ChintanShah25

+0

我的情況也是自動完成功能。用戶輸入「fe」,將返回「功能」,「腳」,「腳腳冷靜」。 – coderz

相關問題