Как запросить несколько полей с помощью 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)