Funkcję wyszukiwania można modelować jako oddzielną usługę z oddzielną odpowiedzialnością od dwóch wspomnianych usług. Tak więc podejściem może być stworzenie nowej usługi („wyszukiwanie”) i przechowywanie kopii danych z obu usług w formie, która jest łatwa do indeksowania i wyszukiwania, być może również zdenormalizowana w celu szybkiego uzyskania wyników w żądany format.
Tak więc, na przykład, możesz mieć starszą bazę danych SQL, używając np. MySql, inną mikrousługę, np. MongoDB, i nową usługę wyszukiwania, korzystając z elasticsearch z danymi z obu już wklejonych (zdormalizowanych) dla wygodniejszego dostępu. oczywiście szczegóły będą zależeć od rodzaju wyszukiwań, które należy przeprowadzić.
Dane z dwóch usług najlepiej byłoby przenieść asynchronicznie do indeksu wyszukiwania za pośrednictwem magistrali zdarzeń, takiej jak Kafka lub Hermes, w celu zwiększenia przepustowości i zmniejszenia sprzężenia między usługami. Zmiana dowolnej z dwóch usług spowodowałaby wysłanie zdarzenia informującego usługę wyszukiwania o aktualizacji również jej danych.
Oczywiście istnieje koszt dodatkowego opóźnienia między zmianami usług i usługi wyszukiwania, ale ponieważ mikrousług są zwykle używane w systemach, które są rozproszone, pewne opóźnienia i przejściowe niespójności są nieuniknione. Posiadanie dodatkowej usługi i wykorzystanie dodatkowej pamięci dla kopii danych, która jest już w pozostałych dwóch usługach, jest również typowym kosztem posiadania wysoce rozproszonego i skalowalnego systemu wykorzystującego mikrousługi.