Полнотекстовый поиск и фильтрация по вложенному массиву объектов elasticsearch

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

Собрался для этой цели использовать elastic. Подготовил для elastic-а вот такую структуру:

{
  did_user_read: true,
  view_info: {
      total: 1,
      users: [
          { name: 'Василий Петров', read_at: '2020-02-04 11:00:01', is_current_user: false },
          { name: 'Петр Зайцев', read_at: '2020-02-04 11:00:01', is_current_user: true },
      ],
  },
  is_favorite: true,
  has_attachments: true,
  from: { 
      short_name: 'Вы',  
      full_name: 'Василий Петров',
      email: '[email protected]', 
      is_current_user: true 
  },
  subject: 'Тайна появления комочков шерсти в пупках',
  received_at: '2020-02-04 11:00:01'
}

Подскажите пожалуйста, как правильно проиндексировать эту структуру, чтобы была возможность фильтровать и искать по вложенным объектам и массивам объектов?

Например, получить все записи, с вот такими критериями:

is_favorite: false

И

ПОЛНОТЕКСТ("вася") 
   ПО ПОЛЯМ users.name (внутри массива) ИЛИ from.full_name ИЛИ from.short_name

И

users.is_current_user НЕ_РАВНО false

И

ОТСОРТИРОВАННЫЕ ПО received_at DESC

Ответы (0 шт):