Функция поиска может быть смоделирована как отдельный сервис с отдельной ответственностью от двух упомянутых вами сервисов. Таким образом, подход здесь может заключаться в создании нового сервиса («поиск») и в нем хранить копии данных обоих сервисов в форме, которую легко индексировать и искать, возможно, также денормализованной для быстрого получения результатов в желаемый формат.
Так, например, у вас может быть устаревшая база данных SQL, использующая, например, mySql, другой микросервис, использующий, например, MongoDB, и новый поисковый сервис, использующий эластичный поиск с данными из обоих уже вставленных вместе (денормализованных) для более удобного доступа. Конечно, детали будут зависеть от того, какие поиски вам нужно выполнить.
Данные из этих двух служб лучше всего передавать асинхронно в индекс поиска через шину событий, такую как Kafka или Hermes, чтобы увеличить пропускную способность и уменьшить связь между службами. Изменение в любом из двух сервисов отправило бы событие, информирующее сервис поиска, чтобы также обновить свои данные.
Конечно, существует дополнительная задержка между изменениями в службах и в службе поиска, но поскольку микросервисы обычно используются в системах, которые распределены, некоторые задержки и временные несоответствия неизбежны в любом случае. Наличие дополнительной услуги и использование дополнительного хранилища для копии данных, которая уже есть в двух других службах, также является типичной стоимостью высокораспределенной и масштабируемой системы, использующей микросервисы.