У меня есть индекс "события" эластичного поиска - в этом индексе есть тип "событие".
объекты событий имеют «место проведения», которое имеет различные свойства, включая «имя», поэтому упрощенная структура такова:
event {
venue {
name: "foo"
}
}
Теперь я использую elasticsearch-rails — все отлично работает для перечисления событий, поиска и т. д. с использованием запроса dsl — но что, если я хочу перечислить все события в месте с определенным именем?
Я предполагаю, что что-то вроде этого должно быть возможно:
Event.search "{ 'query': { 'match': { 'venue.name': '#{params[:v]}' }}}
но я получаю следующую ошибку:
Elasticsearch::Transport::Transport::Errors::BadRequest
сопровождаемый существенной трассировкой стека, которая содержит много такого рода вещей:
Was expecting one of:\n \"]\" ...\n \"}\" ...\n ];
ParseExceptions предлагает искаженный json, но я не уверен, почему.
Простой поиск
Event.search '{"query" : { "match_all" : {} }}'
работает нормально, поэтому я предполагаю, что это просто неправильная структура запроса.
Я пробовал переключать одинарные/двойные кавычки, старался более внимательно следить за примером на этой странице:
https://www.elastic.co/guide/en/elasticsearch/guide/current/denormalization.html
все безрезультатно, задавался вопросом, сталкивался ли кто-нибудь еще с такой ситуацией и мог бы подсказать, как это сделать в ruby.