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.

Другой подход заключается в использовании множественного поиска, чтобы ограничить результаты для дайв-центров.

Другие вопросы по тегам