3
基本上我有3個模型(書籍,章節,作者),並且在索引章節時我想包括一些書籍和作者屬性。沒有索引的rails彈性搜索關係屬性
這裏是我的Chapter.rb
class Chapter < ActiveRecord::Base
belongs_to :book, :counter_cache => true
include Elasticsearch::Model
index_name [Rails.env, model_name.collection.gsub(/\//, '-')].join('_')
mappings do
indexes :id, type: :integer
indexes :title, type: :string
indexes :description, type: :string
indexes :content, type: :string
indexes :updated_at, type: :date # Date example
indexes :book_title
indexes :book_type
indexes :author_name
indexes :book_id
end
def book_title
book.title
end
def book_type
book.book_type
end
def author_name
" #{book.author.firstname} #{book.author.lastname} "
end
def to_indexed_json
to_json methods: [:book_title, :book_type, :author_name]
end
end
http://localhost:9200/development_chapters/_mapping?pretty顯示正確的映射
{
"development_chapters" : {
"mappings" : {
"chapter" : {
"properties" : {
"author_name" : {
"type" : "string"
},
"book_title" : {
"type" : "string"
},....
}
}
}
}
}
那麼爲什麼我沒有得到AUTHOR_NAME,BOOK_TITLE等...在搜索結果中
<Elasticsearch::Model::Response::Result:0x00000105e393a0 @result=#<Hashie::Mash _id="415" _index="development_chapters" _score=1.0 _source=#<Hashie::Mash book_id=153 content="[\"Explicabo accusantium odit .\"]" created_at="2015-04-22T18:43:58.586Z" description="You can't generate the application without quantifying the cross-platform SDD bandwidth!" id=415 title="Future Communications Orchestrator" updated_at="2015-04-22T18:43:58.586Z"> _type="chapter">>
改變了它,現在我得到這樣的:引發ArgumentError /mac/RubymineProjects/ESAA/app/models/chapter.rb:52:in'as_indexed_json' – Richardlonesteen
'as_indexed_json'採取了一個選項散列,因此應該是'def as_indexed_json(options = {})' – Shadwell
@Shadwell謝謝你的對,謝謝:) – edariedl