Searchkick word_start соответствует вложенному полю - PullRequest
0 голосов
/ 30 марта 2019

У меня есть приложение Rails с гемом searchkick.Моя модель имеет вложенное поле JSON.Я пытаюсь сделать его доступным для поиска с соответствием word_start.Когда я вхожу в явном виде, как:

class Post < ApplicationRecord 
  searchkick word_start: [:nested_data_field]
end

Я не работаю, и я получаю ошибку:

{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse [nested_data_field]", "caused_by"=>{"type"=>"illegal_state_exception", "reason"=>"Can't get text on a START_OBJECT at 1:401"}} on item with id '2596'

Как я могу сделать это вложенное поле JSON, чтобы соответствовать word_start?

Я нашел ту же проблему здесь https://github.com/ankane/searchkick/issues/1149 - но это не дает результата.

1 Ответ

1 голос
/ 31 марта 2019

в этом случае вы должны явно указать, как поля должны индексироваться вasticsearch

class Post < ApplicationRecord 
  searchkick word_start: [:author_name, author_country]

  def search_data # override indexing fields
    {
     tite: self.title,
     date: self.created_at,
     author_name: author[:name], # nested json(author field)
     author_country: author[:country],
     comments_ids: comments.map(&:id) # index as an array of ids       
    }
  end
end
...