#elasticsearch
Вопрос:
Мы пытаемся разработать новый метод для запроса, возможно, сотен тысяч уникальных комбинаций «терминов» для данного документа. В настоящее время мы генерируем все комбинации терминов в PHP и храним их все в одном поле, которое мы можем запросить. Мне любопытно, есть ли способ сделать все это во время выполнения с помощью Elasticsearch. Я думаю, что это лучше всего объяснить с помощью примера документа и запроса:
Конкретный объект в нашей системе может иметь 1 или более упорядоченных групп из 1 или более терминов:
{
group1: [a, b],
group2: [c, d],
...
groupX: [y, z]
}
Сегодня мы создаем уникальные комбинации групповых терминов (по 1 термину из каждой группы) и храним эти комбинации в виде массива строк в одном поле:
["acy", "bcy", ... ]
Это позволяет нам запрашивать наш документ по этому уникальному коду, например, «a-c-y» можно проанализировать, чтобы удалить специальные символы и вернуть совпадение. Проблема, однако, в том, что создание этих комбинаций невероятно неэффективно и требует больших затрат памяти, и мы ищем более эффективный способ хранения этой информации.
Предлагает ли Elasticsearch что-нибудь, что позволило бы нам просто хранить отдельные группы (например, в динамических полях) и создавать комбинации на лету при запросе?