At my work place based on different business processes we build multiple indexes eg: Journal Ledger Index, Positions Index, Trades index etc (these are dummy names) approximate 10 indexes close to 100,000 records (each index) with 50 attributes (combo of string, dates and numerals).
We coded in a way like, when a user logs into my search tool and types “risk”, the service looks for all indexes (intentional) and comes back with result in 20 seconds which is reported as a critical performance issue. Any suggestions how do i solve this problem and business anticipation is 10 seconds max.
The life cycle of search process is,
- the Angular UI collects user search criteria (in this case “risk”)
- Request goes to java layer service,
- Then routes to elastic index (open distro) over a load balancer
- Searches all 100k records which user is entitled to see (entitlements validation process) (taking 5 seconds)
- Picks top 10K records (taking 3 seconds)
- Aggregates with counts of ~ 10 fields (taking 8 seconds)
Then responds to user rendering the page.
Any suggestions how do i improve this?