Architecting a universal search for a product with microservices

We are building a new product in real estate space and the end users of this product are not so tech savvy. To have better user experience with our product, we want our users to find relevant things quickly and easily. Apart from a simple UI, a universal search bar seems to add value.

The search bar with auto-complete will allow users to find information such as – their billing history (past payments, invoices..), help content, support content from helpdesk tickets, data from chat history and such.

We are going with microservices architecture for our services such as user management, help ticket system, chat, CMS for help content and more. The question is how do we build this central search service that can index and store all user content from all these services that user will be able to search.

Would each service would dump data into elasticsearch to be indexed and made available for search which then a search service than query? Say when a support ticket is open, or a chat conversation is closed would the relevant microservice copy this data into a service like elastic search? Would it be better for the microservices to push such data to a queue which then is consumed into elasticsearch?

I’m open to any ideas and thoughts on how search is architected nad the best practices there of. Happy to provide more information on our service if it helps with a better answer.

UPDATED:

  • There is one DB per microservice
  • Search need not be real time
  • Not too worried about the load and we will go with hosted search – AWS cloudsearch or elasticsearch