Send v2 AST search request to zoekt webserver

What does this MR do and why?

Send v2 AST search request to zoekt

This is not functionally different than the current requests (we currently send a very large list of repo ids), but this will allow us to send more complicated queries in the next iteration.

We plan to start sending filters for traversal ids, repo access level, visibility level, etc.

AI Summary

This code introduces a new search feature for GitLab's code search functionality. The main change adds a feature flag that allows switching between two different ways of building search requests - the old method and a new "AST payload" approach.

The new approach creates a more structured way to build search queries using dedicated classes that can handle different types of search filters (like searching by text patterns, repository IDs, or combining multiple conditions). It includes a new system for creating search requests with configurable options like timeouts and result limits.

The code also adds comprehensive test coverage to ensure the new search filters and request building work correctly. The feature is currently disabled by default, allowing for safe testing and gradual rollout. This appears to be preparation for improving how GitLab searches through code repositories, making the search system more flexible and maintainable.

References

Closes #547282 (closed)

This is a continuation of gitlab-zoekt-indexer!516 (merged)

Screenshots or screen recordings

Before After

How to set up and validate locally

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by John Mason

Merge request reports

Loading