public class ShadowEngine extends Engine
IndexReader
is opened instead of
an IndexWriter
. All methods that would usually perform write
operations are no-ops, this means:
- No operations are written to or read from the translog
- Create, Index, and Delete do nothing
- Flush does not fsync any files, or make any on-disk changes
In order for new segments to become visible, the ShadowEngine may perform
stage1 of the traditional recovery process (copying segment files) from a
regular primary (which uses InternalEngine
)
Notice that since this Engine does not deal with the translog, any
Engine.get(Get get)
request goes directly to the searcher, meaning it is
non-realtime.Engine.Create, Engine.Delete, Engine.DeleteByQuery, Engine.FailedEngineListener, Engine.Get, Engine.GetResult, Engine.Index, Engine.IndexingOperation, Engine.IndexThrottle, Engine.NoOpLock, Engine.Operation, Engine.RecoveryHandler, Engine.Searcher
Modifier and Type | Field and Description |
---|---|
static TimeValue |
DEFAULT_NONEXISTENT_INDEX_RETRY_WAIT |
static String |
NONEXISTENT_INDEX_RETRY_WAIT
how long to wait for an index to exist
|
deletionPolicy, engineConfig, failedEngine, failedEngineListener, failEngineLock, isClosed, logger, readLock, rwl, shardId, store, writeLock
Constructor and Description |
---|
ShadowEngine(EngineConfig engineConfig) |
Modifier and Type | Method and Description |
---|---|
protected void |
closeNoLock(String reason)
Method to close the engine while the write lock is held.
|
void |
create(Engine.Create create) |
void |
delete(Engine.Delete delete) |
void |
delete(Engine.DeleteByQuery delete) |
void |
flush()
Flushes the state of the engine including the transaction log, clearing memory and persisting
documents in the lucene index to disk including a potentially heavy and durable fsync operation.
|
void |
flush(boolean force,
boolean waitIfOngoing)
Flushes the state of the engine including the transaction log, clearing memory.
|
void |
forceMerge(boolean flush,
int maxNumSegments,
boolean onlyExpungeDeletes,
boolean upgrade)
Triggers a forced merge on this engine
|
Engine.GetResult |
get(Engine.Get get) |
protected org.apache.lucene.search.SearcherManager |
getSearcherManager() |
boolean |
hasUncommittedChanges()
Returns
true the internal writer has any uncommitted changes. |
void |
index(Engine.Index index) |
void |
maybeMerge() |
boolean |
possibleMergeNeeded()
Returns true if a possible merge is really needed.
|
void |
recover(Engine.RecoveryHandler recoveryHandler) |
void |
refresh(String source)
Refreshes the engine for new search operations to reflect the latest
changes.
|
List<Segment> |
segments()
The list of segments in the engine.
|
SnapshotIndexCommit |
snapshotIndex()
Snapshots the index and returns a handle to it.
|
acquireSearcher, close, config, ensureOpen, failEngine, flushAndClose, forceMerge, getFromSearcher, getSegmentInfo, guardedRamBytesUsed, isMergedSegment, maybeFailEngine, newSearcher, refreshNeeded, segmentsStats, wrapIfClosed, writerSegmentStats
public static final String NONEXISTENT_INDEX_RETRY_WAIT
public static final TimeValue DEFAULT_NONEXISTENT_INDEX_RETRY_WAIT
public ShadowEngine(EngineConfig engineConfig)
public void create(Engine.Create create) throws EngineException
create
in class Engine
EngineException
public void index(Engine.Index index) throws EngineException
index
in class Engine
EngineException
public void delete(Engine.Delete delete) throws EngineException
delete
in class Engine
EngineException
public void delete(Engine.DeleteByQuery delete) throws EngineException
delete
in class Engine
EngineException
public void flush() throws EngineException
Engine
flush
in class Engine
EngineException
public void flush(boolean force, boolean waitIfOngoing) throws EngineException
Engine
flush
in class Engine
force
- if true
a lucene commit is executed even if no changes need to be committed.waitIfOngoing
- if true
this call will block until all currently running flushes have finished.
Otherwise this call will return without blocking.EngineException
public void forceMerge(boolean flush, int maxNumSegments, boolean onlyExpungeDeletes, boolean upgrade) throws EngineException
Engine
forceMerge
in class Engine
EngineException
public Engine.GetResult get(Engine.Get get) throws EngineException
get
in class Engine
EngineException
public List<Segment> segments()
Engine
public boolean possibleMergeNeeded()
Engine
possibleMergeNeeded
in class Engine
public void maybeMerge() throws EngineException
maybeMerge
in class Engine
EngineException
public void refresh(String source) throws EngineException
Engine
refresh
in class Engine
EngineException
public SnapshotIndexCommit snapshotIndex() throws EngineException
Engine
snapshotIndex
in class Engine
EngineException
public void recover(Engine.RecoveryHandler recoveryHandler) throws EngineException
recover
in class Engine
EngineException
protected org.apache.lucene.search.SearcherManager getSearcherManager()
getSearcherManager
in class Engine
protected void closeNoLock(String reason) throws ElasticsearchException
Engine
closeNoLock
in class Engine
ElasticsearchException
public boolean hasUncommittedChanges()
Engine
true
the internal writer has any uncommitted changes. Otherwise false
hasUncommittedChanges
in class Engine
Copyright © 2009–2015. All rights reserved.