Я наткнулся на проблему, касающуюся отображения индексов моделей (ActiveRecord) с использованием ElasticSearch и Tire. Я использую ту же систему, о которой они говорят в документации, для сопоставления полей ассоциации. Отображение кажется правильным, но я не могу найти вещи там, по-видимому:ElasticSearch: Как правильно сопоставить ассоциации, чтобы их можно было искать?
class ElasticSearchTest < ActiveRecord::Base
belongs_to :elastic_search_belongs_to_test
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :title
indexes :body
indexes :elastic_search_belongs_to_test do
indexes :title
indexes :body
end
end
это схема отображения доступны на упругом поиска:
curl http://localhost:9200/elastic_search_tests/elastic_search_test_mapping?pretty=1
>> {
"elastic_search_test" : {
"properties" : {
"body" : {
"type" : "string"
},
"elastic_search_belongs_to_test" : {
"properties" : {
"body" : {
"type" : "string"
},
"title" : {
"type" : "string"
}
}
},
"title" : {
"type" : "string"
}
}
}
}
кажется хорошим. Это мои примеры:
t1 = ElasticSearchTest.create title: "title1", body: "body1",
elastic_search_belongs_to_test: ElasticSearchBelongsToTest.new(title: "title2", body: "body2"))
ElasticSearchTest.index.refresh
ElasticSearchTest.search("title1") #=> returns t1 in results
ElasticSearchTest.search("title2") #=> does not return t1 in results!!!!
Что мне не хватает?
не следует автоматически добавлять их на основании предположения, что если я определил их в преобразовании индекса, то я также хочу их написать? – ChuckE
Да, метод 'to_indexed_json' по умолчанию должен учитывать их. – karmi
Что это значит, если это не так? Потому что это именно то, что произошло. Есть ли конкретный случай, когда этого не происходит? – ChuckE