Как запросить несколько полей с помощью Chewy

Допустим, у меня есть индекс с несколькими объектами:

class ThingsIndex < Chewy::Index
  define_type User do
    field :full_name
  end 

  define_type Post do 
    field :title
  end
end

Как мне искать обоих пользователей? full_name и сообщения titles,

Документы говорят только о запросе одного атрибута, например:

ThingsIndex.query(term: {full_name: 'Foo'})

1 ответ

Есть несколько способов сделать это. Цепочка, вероятно, самая простая:

ThingsIndex.query(term: {full_name: 'Foo'}).query(term: {title: 'Foo'})

Если вам нужно выполнить несколько запросов, вы можете рассмотреть возможность их объединения:

query = ThingsIndex.query(term: {full_name: 'Foo'})
query = query.merge(ThingsIndex.query(term: {title: 'Foo'}))

Подробнее о слиянии читайте здесь: Chewy #merge docs

Убедитесь, что вы установили лимит, иначе он показывает только 10 результатов:

query.limit(50)

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