2013-06-04 2 views
1

Я начинаю внедрять ElasticSearch вместо старой самодельной поисковой системы. Я перенести основную часть кода, но я должен вынести URL предоставленных скрепкой, и я не могу иметь правильный объект в моих resulstsElasticsearch + Tire + PaperClip: Вложенные объекты

has_attached_file: содержание, URL: «/ система /: привязанность /: ид /: стиль /: имя_файл»

mapping do 
    indexes :name 
    indexes :description 
    indexes :tags do 
    indexes :name, type: :string 
    end 
    indexes :content, type: :object do 
    indexes :url 
    end 
end 


def to_indexed_json 
    { 
    name: name, 
    description: description, 
    tags: tags.map { |tag| { name: tag.name }}, 
    content: content_url_json 
    }.to_json 
end 

И вот результат у меня при запросе Elasticsearch с завитком

{ 
    "element": { 
    "properties": { 
     "content": { 
     "type": "string" 
     }, 
     "name": { 
     "type": "string" 
     }, 
     "tags": { 
     "properties": { 
      "name": { 
      "type": "string" 
      } 
     } 
     } 
    } 
    } 
} 

Мне нужно позвонить element.content.url. Но так как я не могу повернуть content к объекту, этот вызов завершится с ошибкой. Не могли бы вы помочь мне найти, как найти что-то не так в моем коде?

ответ

0

Решено. Глядя в код, блок кажется интерпретированным. Поэтому я заменил

indexes :content, type: :object do 
    indexes :url 
end 

по

indexes :content { url: {type: :string}} 

решить проблему

Смежные вопросы