Я работаю над поисковой панелью с возможностями полнотекстового поиска, поддерживаемой ES. Поиск будет первоначально потребляться приборной панелью пользовательского интерфейса. Я планирую создать прикладной уровень API веб-службы (WS) между панелью мониторинга пользовательского интерфейса и ES, который будет направлять бизнес-поиск в ES.
В будущем может быть несколько клиентов для WS, каждый со своим бизнесом. варианты использования и сложные требования к данным (в основном поля ответа). В них много сущностей и огромное количество полей. Каждому клиенту необходимо указать, какие поля и какие объекты он хочет вернуть, с какими полями.
Чтобы поддержать это динамически изменяющееся требование, один из подходов может состоять в том, чтобы WS был проходом к ES (с предварительной проверкой, такой как контроль доступа и последующие преобразования в ответ от ES). API-интерфейсы WS будут выглядеть точно так же, как API-интерфейсы ES. Пользовательский интерфейс должен создавать запросы ES через JS клиента и отправлять его на WS, который после контроля доступа получит данные от ES.
Я новичок в ES и скепти c этого подхода. Могут ли быть какие-то особые проблемы в этом подходе. Один из моих коллег работал над ES раньше, но всегда с клиентом бэкэнда Java, поэтому он не слишком уверен.
Я искал клиента ES Js, а здесь есть официальный здесь .
Некоторый контекст здесь:
У нас есть около 4 различных объектов (может увеличиться в будущем) с полными текстовыми полями и полями типа ключевых слов. Типичный поиск может иметь несколько фильтров и поисковых терминов и может указывать поля результатов. Кроме того, некоторые поиски будут проходить между объектами, а некоторые - отдельными. Мы поддерживаем отдельную сущность для каждой сущности.