モデルにElasticSearch統合を実装しています:
require 'elasticsearch/model'
class MissionDef < ActiveRecord::Base
# field: name (String(40))
# field: icon (String(2000))
# field: definition (String)
# field: public, boolean
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
def as_indexed_json(options={})
self.as_json(
only: [:id, :name]
)
end
end
私のRailsコンソールでは、次のことを行いました。
MissionDef.import
MissionDef.first
MissionDef id: 226, ade_channel_key: "d403d658313e6c35ce", name: "Test Mission", icon: "/app/assets/images/badges/Showedup.png", definition: "{}", deleted_at: nil, created_at: "2015-08-04 11:30:08", updated_at: "2015-08-04 11:30:08", container_id: 883, public: true
マイクエリ
1) 索引付けされていない名前と ID 以外のフィールド値で検索を行うと、検索結果が得られます。例:
result = MissionDef.search 'app' --- 動作します result.records.count => 1
これは私が推測するケースではありません。
2) Missiondef.first.as_indexed_json => が正しく機能しないため、JSON としてオブジェクト全体として o/p が返されます
{"id"=>226, "ade_channel_key"=>"d403d658313e6c35ce", "name"=>"テスト ミッション", "icon"=>"/app/assets/images/badges/Showedup.png", "定義" =>"{}", "created_at"=>2015 年 8 月 4 日 11:30:08 UTC +00:00、"updated_at"=>2015 年 8 月 4 日 11:30:08 UTC +00:00、" container_id"=>883, "public"=>true}