Я использую ElasticSearch с Tire для индексации и поиска модели mongoid, и я искал «правильный» способ индексирования и поиска встроенных ассоциаций. У меня есть полностью функциональная настройка для этой модели, но по какой-то причине я могу искать все, кроме поля во встроенной модели (ResourceTag)
Удаление ненужного кода
class Resource
include Mongoid::Document
include Tire::Model::Search
include Tire::Model::Callbacks
include Mongoid::Timestamps
embeds_many :tags, :class_name => "ResourceTag"
accepts_nested_attributes_for :tags, :allow_destroy => true
# Tire
mapping do
indexes :_id
indexes :version, analyzer: 'snowball', boost: 100
indexes :created_at, type: 'date', index: :not_analyzed
indexes :updated_at, type: 'date', index: :not_analyzed
indexes :assignment do
indexes :_id
indexes :name, analyzer: 'snowball', boost: 100
indexes :current_state, analyzer: 'snowball', boost: 100
do
indexes :resource_files do
indexes :_id
indexes :name, analyzer: 'snowball', boost: 100
end
indexes :tags do
indexes :_id
indexes :name, analyzer: 'snowball', boost: 100
end
end
def to_indexed_json
self.to_json(
:include => {
:assignment => {
:methods => :formatted_current_state
},
:resource_files => {
:methods => [:is_video, :is_image]
},
:tags => nil
}
)
end
end
class ResourceTag
include Mongoid::Document
# Attributes
attr_accessible :name
# Fields
field :name, :type => String
# Validations
validates_presence_of :name
validates_uniqueness_of :name, :case_sensitive => false
# Relations
embedded_in :resource
end
я не совсем уверен, что не так с моим кодом, но я уверен, что у меня это работало до этого, и теперь это испортило: s
я искал пример шины с мангоидными и встроенными документами, но не повезло, и я убежден в своих идеях.
Спасибо за любые идеи и вклады.