Skip to content

Don't use Elasticsearch join for group/project MR searches

Dylan Griffith requested to merge 322784-avoid-joins-when-searching-mrs into master

What does this MR do?

When searching for merge requests in the context of a group we don't need to use an Elasticsearch join. The join logic defined in ApplicationClassProxy is not necessary as we are already filtering down based on the project ID list the user has access to and hence we can just use the target_project_id field instead of joining to the project and using the ID field.

This MR is basically identical to !46461 (merged) but in this case we need to use target_project_id instead of project_id since the MR only had target_project_id until recently and project_id is not yet backfilled.

This change on it's own will make searches more performance (since this term query is more efficient than a join) but it will additionally be the next step in allowing us to move merge requests to a separate index in Elasticsearch &5468 (closed)

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #322784 (closed)

Edited by Dylan Griffith

Merge request reports