• 
      

    Search: Add get_es_client() to ES backend and update SignalProcessor

    Review Request #15053 — Created May 13, 2026 and updated — Latest diff uploaded

    Information

    Review Board
    release-8.x

    Reviewers

    Two targeted changes to existing files:
    - ElasticsearchBackend.get_es_client() — adds a new method to the
    Elasticsearch search backend that constructs and returns a raw
    elasticsearch.Elasticsearch client using the URL from the current backend
    configuration. Used by FacetedSearchEngine to run direct ES queries outside
    of Haystack. Raises RuntimeError if the installed elasticsearch package
    is unsupported.
    - SignalProcessor — extends handle_save and handle_delete to call
    FacetCache().invalidate_group(group_id) after each successful index update.
    A _MODEL_TO_GROUP mapping at module level translates the model class name
    to its facet cache group ID, covering ReviewRequest, User, Profile,
    Group, and all comment model types (Comment, GeneralComment,
    FileAttachmentComment, ScreenshotComment). Unrecognised model types are
    silently ignored. Cache invalidation is skipped when the index update itself
    raises an exception.

    Group.users M2M changes are also handled: when users are added to or removed
    from a group the affected user records are re-indexed and the user group's
    cache is invalidated.

    Verified that get_es_client returns a correctly configured Elasticsearch
    client and raises RuntimeError for unsupported package versions. Verified
    that SignalProcessor invalidates the correct facet cache group after save and
    delete for all tracked model types, silently ignores unrecognised models, and
    does not propagate indexing exceptions. Confirmed existing backend and signal
    processor behaviour is unchanged.

    Commits

    Files