Elasticsearch запрашивает несколько индексов, ограничивая поля одного индекса
У меня есть Autocomplete
Класс с методом результатов, который запрашивает две разные модели для возврата данных. Это частично работает отлично, но с одной серьезной проблемой.
def results
Searchkick.search @query, index_name: [Location, DiveCenter]
end
Мне нужно ограничить число попаданий, возвращаемых из индекса DiveCenter
из-за способа, которым я настроил индекс. Это настроено таким образом, потому что пользователь либо нажимает на DiveCenter
и быть доставлен в DiveCenter
показать страницу ИЛИ щелкнуть по местоположению и перейти на /search?(city | country)=value
,
searchkick searchable: [:name, :city, :state, :country]
def search_data
{
name: name,
city: location.city,
state: location.state,
country: location.country
}
end
В общем, что мне нужно, это:
def results
Searchkick.search @query, index_name: [Location, DiveCenter], fields: ['location.city', 'location.state', 'location.country', 'dive_center.name']
end
1 ответ
Elasticsearch не позволяет ограничить результаты одним индексом.
Одним из подходов является фильтрация результатов в Ruby.
Другой подход заключается в использовании множественного поиска, чтобы ограничить результаты для дайв-центров.