我剛剛進入軌道開始ES和我中遇到的東西我不明白:ElasticSearch不使用所有字段(字符串數組)搜索
我有一個藝術家模型(簡化的例子) :
class Artist < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
# simplified to get the idea
def get_aliases
["alias1", "alias2"]
end
def as_indexed_json(options = {})
self.as_json({
methods: [ :get_aliases, :get_tracks ],
only: [ :name, :get_aliases],
include: {
get_tracks: { only: :name } },
})
end
end
我的問題是,搜索是不使用get_aliases屬性得出的結果ES:只有「name」屬性進行搜索:
我有一個開發。有一些藝術家的數據庫,他們都沒有字符串「菲爾」在裏面,但有一個「菲利普」在其別名。 當我嘗試Artist.__elasticsearch__.search('phil').count
時,我得到0結果。
我已經試過Artist.all.__elasticsearch__.import
獲得:
=> 0
和Artist.__elasticsearch__.refresh_index!
獲得:
=> {"_shards"=>{"total"=>10, "successful"=>5, "failed"=>0}}
(不知道的區別是兩個命令之間有什麼...),但沒有運氣:/
我的問題是因爲我使用一個字符串數組作爲屬性的事實嗎?我應該用不同的索引嗎?
歡迎任何想法/幫助!
編輯:
我使用
寶石 'elasticsearch護欄', '〜> 0.1.7'
寶石 'elasticsearch模型', '〜> 0.1.7'
和ElasticSearch安裝的服務器是1.7.1
你只是路過的符號,而不是調用實際的方法。 ':get_aliases' <>'get_aliases' – omarvelous
好的,沒有看到那個來! 我正在通過irb控制檯進行測試,結果在兩個實現中都有相同的結果.... 如果你想發佈一個答案,我會接受它,否則,我會明天批准我的... 謝謝! – gfd