Let assume that I have a database for storing orders for multiple stores and I have following tables:User  represents userStore  represents storeUserStore  many to many between User and Store. User can cooperatewith multiple stores.Product represents available productsOrder- one to many between User and Order and Product and Order.Above tables are just examples I tried to found something complicated :) Now I want to implement the following features:I want to search all products ordered by specific person for store XI want to search products using all attributes from each entity connected with product.I want to be notified when a new product will be ordered by X user for Y store  this is not connected with the search its more like that the user prepare his own query and he is notified when new data for his query appear. I can implement it on multiple ways but Im wondering whether it makes sense to use any of the available on the market search engines to be notified that new data appeared? How do you do such staff?Based on the above requirements I need to make decision how my search mechanism should be built I see few options:Build query on database. This is pretty straightforward I always usedthis way but when I look at 2nd point that a user can search productsproviding search criteria from the entire graph of objects connectedwith the product Im a bit scared of the implementation of suchsolution and maybe its better to use second option.Utilize search engine (Azue Search, ElasticSearch) to put thedatabase structure into cache and implementation of making querywould be less consuming from development point of view (maybe? I have just stared learning about search engines and their features). Additionallysuch search engine provides support for scoring mechanism and multilanguage.This is more theoretical question: we have some requirements and we should find the best option to implement them. 
Which search engine should I use to suport complex search scenerio
search engine;elasticsearch