Полнотекстовый поиск и фильтрация по вложенному массиву объектов 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