• 
      

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

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

    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.

    Summary ID Author
    Search: Add get_es_client() to ES backend and update SignalProcessor
    3c33a032f9e0104d5343802ac9a0c8282894ea00 DanielCasaresIglesias
    Description From Last Updated

    continuation line over-indented for visual indent Column: 36 Error code: E127

    reviewbot reviewbot

    line too long (82 > 79 characters) Column: 80 Error code: E501

    reviewbot reviewbot

    line too long (80 > 79 characters) Column: 80 Error code: E501

    reviewbot reviewbot
    Checks run (1 failed, 1 succeeded)
    flake8 failed.
    JSHint passed.

    flake8

    dan.casares
    Review request changed
    Commits:
    Summary ID Author
    Search: Add get_es_client() to ES backend and update SignalProcessor
    762404efe45048fef2306fc18fbffb4add677d0e DanielCasaresIglesias
    Search: Add get_es_client() to ES backend and update SignalProcessor
    3c33a032f9e0104d5343802ac9a0c8282894ea00 DanielCasaresIglesias

    Checks run (2 succeeded)

    flake8 passed.
    JSHint passed.