2015-01-12 86 views
1

如何使用查詢dsl(QueryBuilder)實現autocompleter search/results? (api link如何使用查詢dsl(elasticsearch)實現自動查詢?

想要實現像搜索: 搜索關鍵字 「約翰d」

結果:

「約翰的DAA」

「約翰香薰」

「約翰Deerms」


我嘗試使用「match」和「multi match」與「phrase_prefix」類型,它幾乎做了這項工作,但有一些錯誤,因爲結果是:

關鍵字「John D」 - 只有「John Daa」被顯示,另外兩個丟失,不太瞭解這部分。

關鍵字「John De」 - 顯示的是「John Derm」,「John Deerms」,這是可以的。

+0

您是否嘗試過自動填充API - 自動填充API將是一個更好的性能和功能選項 - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-completion.html –

+0

不知道我是否明白這一點,但在索引階段,我將不得不手動爲「輸出」輸入準確的「輸入」值。這對我來說不是很好的選擇,因爲我有大約800k條目。我希望能夠在其中自動完成搜索。 –

+0

是的,你需要這樣做。但速度真的很棒。 –

回答

0

您的問題已由completion suggester解決。

+0

正如Vineeth Mohan已經提到的,我必須mannualy在索引階段爲「輸出」添加條目值。這對我來說是不可能的,因爲我有成千上萬的數據。 –

+0

成千上萬的記錄是彈性搜索方面的少量數據。如果您可以更改將數據提供給索引的代碼 - 請進行更改並重新編制索引腳本,以便處理針對您的用例量身定製的「輸出」值。 –