Interface MassIndexer
-
public interface MassIndexer
A MassIndexer is useful to rebuild the indexes from the data contained in the database. This process is expensive: all indexed entities and their indexedEmbedded properties are scrolled from database.- Author:
- Sanne Grinovero
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description MassIndexer
batchSizeToLoadObjects(int batchSize)
Sets the batch size used to load the root entities.MassIndexer
cacheMode(CacheMode cacheMode)
Sets the cache interaction mode for the data loading tasks.MassIndexer
dropAndCreateSchemaOnStart(boolean dropAndCreateSchema)
Drops the indexes and their schema (if they exist) and re-creates them before indexing.MassIndexer
failureHandler(MassIndexingFailureHandler failureHandler)
Sets theMassIndexingFailureHandler
.MassIndexer
idFetchSize(int idFetchSize)
Specifies the fetch size to be used when loading primary keys if objects to be indexed.MassIndexer
limitIndexedObjectsTo(long maximum)
Stops indexing after having indexed a set amount of objects.MassIndexer
mergeSegmentsAfterPurge(boolean enable)
Merges each index into a single segment after the initial index purge, just before indexing.MassIndexer
mergeSegmentsOnFinish(boolean enable)
Merges each index into a single segment after indexing.MassIndexer
monitor(MassIndexingMonitor monitor)
Sets theMassIndexingMonitor
.MassIndexer
purgeAllOnStart(boolean purgeAll)
Removes all entities from the indexes before indexing.CompletionStage<?>
start()
Starts the indexing process in background (asynchronous).void
startAndWait()
Starts the indexing process, and then block until it's finished.MassIndexer
threadsToLoadObjects(int numberOfThreads)
Sets the number of threads to be used to load the root entities.MassIndexer
transactionTimeout(int timeoutInSeconds)
Timeout of transactions for loading ids and entities to be re-indexed.MassIndexer
typesToIndexInParallel(int threadsToIndexObjects)
Sets the number of entity types to be indexed in parallel.
-
-
-
Method Detail
-
typesToIndexInParallel
MassIndexer typesToIndexInParallel(int threadsToIndexObjects)
Sets the number of entity types to be indexed in parallel.Defaults to
1
.- Parameters:
threadsToIndexObjects
- number of entity types to be indexed in parallel- Returns:
this
for method chaining
-
threadsToLoadObjects
MassIndexer threadsToLoadObjects(int numberOfThreads)
Sets the number of threads to be used to load the root entities.- Parameters:
numberOfThreads
- the number of threads- Returns:
this
for method chaining
-
batchSizeToLoadObjects
MassIndexer batchSizeToLoadObjects(int batchSize)
Sets the batch size used to load the root entities.- Parameters:
batchSize
- the batch size- Returns:
this
for method chaining
-
cacheMode
MassIndexer cacheMode(CacheMode cacheMode)
Sets the cache interaction mode for the data loading tasks.Defaults to
CacheMode.IGNORE
.- Parameters:
cacheMode
- the cache interaction mode- Returns:
this
for method chaining
-
mergeSegmentsOnFinish
MassIndexer mergeSegmentsOnFinish(boolean enable)
Merges each index into a single segment after indexing.Defaults to
false
.- Parameters:
enable
-true
to enable this operation,false
to disable it.- Returns:
this
for method chaining
-
mergeSegmentsAfterPurge
MassIndexer mergeSegmentsAfterPurge(boolean enable)
Merges each index into a single segment after the initial index purge, just before indexing.Defaults to
true
.This setting has no effect if
purgeAllOnStart
is set to false.- Parameters:
enable
-true
to enable this operation,false
to disable it.- Returns:
this
for method chaining
-
dropAndCreateSchemaOnStart
MassIndexer dropAndCreateSchemaOnStart(boolean dropAndCreateSchema)
Drops the indexes and their schema (if they exist) and re-creates them before indexing.Indexes will be unavailable for a short time during the dropping and re-creation, so this should only be used when failures of concurrent operations on the indexes (automatic indexing, ...) are acceptable.
This should be used when the existing schema is known to be obsolete, for example when the Hibernate Search mapping changed and some fields now have a different type, a different analyzer, new capabilities (projectable, ...), etc.
This may also be used when the schema is up-to-date, since it can be faster than a
purge
on large indexes.Defaults to
false
.- Parameters:
dropAndCreateSchema
- iftrue
the indexes and their schema will be dropped then re-created before starting the indexing- Returns:
this
for method chaining
-
purgeAllOnStart
MassIndexer purgeAllOnStart(boolean purgeAll)
Removes all entities from the indexes before indexing.Set this to false only if you know there are no entities in the indexes: otherwise search results may be duplicated.
Defaults to
true
.- Parameters:
purgeAll
- iftrue
all entities will be removed from the indexes before starting the indexing- Returns:
this
for method chaining
-
limitIndexedObjectsTo
@Incubating MassIndexer limitIndexedObjectsTo(long maximum)
Stops indexing after having indexed a set amount of objects.As a results the indexes will not be consistent with the database: use only for testing on an (undefined) subset of database data.
- Parameters:
maximum
- the maximum number of objects to index- Returns:
this
for method chaining
-
start
CompletionStage<?> start()
Starts the indexing process in background (asynchronous).May only be called once.
- Returns:
- a
CompletionStage
to react to the completion of the indexing task. CallCompletionStage.toCompletableFuture()
on the returned object to convert it to aCompletableFuture
(which implementsFuture
).
-
startAndWait
void startAndWait() throws InterruptedException
Starts the indexing process, and then block until it's finished.May only be called once.
- Throws:
InterruptedException
- if the current thread is interrupted while waiting.
-
idFetchSize
MassIndexer idFetchSize(int idFetchSize)
Specifies the fetch size to be used when loading primary keys if objects to be indexed.Some databases accept special values, for example MySQL might benefit from using
Integer.MIN_VALUE
otherwise it will attempt to preload everything in memory.- Parameters:
idFetchSize
- the fetch size to be used when loading primary keys- Returns:
this
for method chaining
-
transactionTimeout
MassIndexer transactionTimeout(int timeoutInSeconds)
Timeout of transactions for loading ids and entities to be re-indexed.Specify a timeout which is long enough to load and index all entities of the type with the most instances, taking into account the configured batch size and number of threads to load objects.
Only supported in JTA-compatible environments.
- Parameters:
timeoutInSeconds
- the transaction timeout in seconds; If no value is given, the global default timeout of the JTA environment applies.- Returns:
this
for method chaining
-
monitor
MassIndexer monitor(MassIndexingMonitor monitor)
Sets theMassIndexingMonitor
.The default monitor just logs the progress.
- Parameters:
monitor
- The monitor that will track mass indexing progress.- Returns:
this
for method chaining
-
failureHandler
MassIndexer failureHandler(MassIndexingFailureHandler failureHandler)
Sets theMassIndexingFailureHandler
.The default handler just forwards failures to the
background failure handler
.- Parameters:
failureHandler
- The handler for failures occurring during mass indexing.- Returns:
this
for method chaining
-
-