Interface SearchWorkspace


  • public interface SearchWorkspace
    The entry point for explicit index operations.

    A SearchWorkspace targets a pre-defined set of indexed types (and their indexes).

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void flush()
      Flush to disk the changes to indexes that were not committed yet.
      void mergeSegments()
      Merge all segments of the indexes targeted by this workspace into a single one.
      void purge()
      Delete all documents from indexes targeted by this workspace.
      void purge​(Set<String> routingKeys)
      Delete documents from indexes targeted by this workspace that were indexed with any of the given routing keys.
      void refresh()
      Refresh the indexes so that all changes executed so far will be visible in search queries.
    • Method Detail

      • purge

        void purge()
        Delete all documents from indexes targeted by this workspace.

        With multi-tenancy enabled, only documents of the current tenant will be removed: the tenant that was targeted by the session from where this workspace originated.

      • purge

        void purge​(Set<String> routingKeys)
        Delete documents from indexes targeted by this workspace that were indexed with any of the given routing keys.

        With multi-tenancy enabled, only documents of the current tenant will be removed: the tenant that was targeted by the session from where this workspace originated.

        Parameters:
        routingKeys - The set of routing keys. If non-empty, only documents that were indexed with these routing keys will be deleted. If empty, documents will be deleted regardless of their routing key.
      • flush

        void flush()
        Flush to disk the changes to indexes that were not committed yet. In the case of backends with a transaction log (Elasticsearch), also apply operations from the transaction log that were not applied yet.

        This is generally not useful as Hibernate Search commits changes automatically. Only to be used by experts fully aware of the implications.

        Note that some operations may still be waiting in a queue when flush() is called, in particular operations queued as part of automatic indexing before a transaction is committed. These operations will not be applied immediately just because a call to flush() is issued: the "flush" here is a very low-level operation managed by the backend.

      • refresh

        void refresh()
        Refresh the indexes so that all changes executed so far will be visible in search queries.

        This is generally not useful as indexes are refreshed automatically, either after every change (default for the Lucene backend) or periodically (default for the Elasticsearch backend, possible for the Lucene backend by setting a refresh interval). Only to be used by experts fully aware of the implications.

        Note that some operations may still be waiting in a queue when refresh() is called, in particular operations queued as part of automatic indexing before a transaction is committed. These operations will not be applied immediately just because a call to refresh() is issued: the "refresh" here is a very low-level operation handled by the backend.

      • mergeSegments

        void mergeSegments()
        Merge all segments of the indexes targeted by this workspace into a single one.

        Note this operation may affect performance positively as well as negatively. As a rule of thumb, if indexes are read-only for extended periods of time, then calling mergeSegments() may improve performance. If indexes are written to, then calling mergeSegments() is likely to degrade read/write performance overall.