Add All Users to the Elasticsearch index to make user list faster
What are you trying to do? Articulate your objectives using absolutely no jargon.
We should index all users into elasticsearch to make for faster list pages that are user-based.
How is it done today, and what are the limits of current practice?
#357553 (comment 915820929) Currently disabled for Gitlab.com for global search.
You can only search for an exact match for the user's name. (If I knew the user name why would I search for it? )
What's new in your approach and why do you think it will be successful?
- Eventual enables better controls from Search APIs to create filtering and aggregations.
- Eventual enables display of user search results with additional data related to that user.
- Eventual enables integrations into other related information. Maybe show the last Merge from the user.
- Eventual enables better querying for full-text search with fuzzy matching.
Who cares? If you're successful, what difference will it make?
Operations care because it will decrease the overall load on the Database. Other teams that are working on decreasing overall database load will care.
Keeping the Global search disabled for users creates a disadvantage to UI that is not equal to the capabilities od the API.
Self Managed customers would have another reason to use Advanced Search. (the Check would be for elasticsearch, not advanced search enabled.)
What are the risks and the payoffs?
- Payoff - Removes load from a heavily worked database.
How much will it cost?
2 Milestones for 1 dev.
How long will it take?
3 months.
What are the midterm and final "exams" to check for success?
Index steps
- Create elasticsearch proxy configuration settings
- Pause Indexing
- Index users with a migration. (initial)
- Resume indexing
Design
We need to determine what fields would be Keyword Searchable, filterable, and sortable. Username would be included.
An example would be the items listed in the main settings of the profile page.
Some of the ideas for this include.
- Search by status
- Search by Status emoji
- Search by Twitter handle
- Search by organization
- Filter/Sort by busy status
- Filter by Timezones
- Filter/sort account creation date
- Search by Email address (if it is public)
Front end
- We can start with the existing front end so these steps could happen any time after the indexing.