RailsでESを使い始めたばかりで、理解できないことに遭遇しました:
私はArtistモデルを持っています(例のために単純化されています):
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
私の問題は、ES 検索が get_aliases プロパティを使用して結果を提供していないことです。「名前」属性のみが検索されます。
私は開発者を持っています。いくつかのアーティストが含まれるデータベースには、文字列「Phil」が含まれていませんが、別名に「Phillip」が含まれています。試してみると、Artist.__elasticsearch__.search('phil').count
0の結果が得られます。
私はArtist.all.__elasticsearch__.import
取得しようとしました:
=> 0
そしてArtist.__elasticsearch__.refresh_index!
取得:
=> {"_shards"=>{"total"=>10, "successful"=>5, "failed"=>0}}
(2つのコマンドの違いはわかりません...)、しかし運はありません:/
私の問題は、文字列の配列をプロパティとして使用しているという事実から来ていますか? 別の方法でインデックスを作成する必要がありますか?
どんなアイデア/ヘルプも大歓迎です!
編集: gem '
elasticsearch
-rails', '~> 0.1.7'
gem 'elasticsearch-model', '~> 0.1.7' を使用しています
インストールされているElasticSearchサーバーは1.7.1です