Explanation
An explanation gives the reason behind a design: what the engine does about the limits of object storage, and what that costs a deployment.
All pages
Architecture
Why storage is the source of truth, and what nodes are for.
Generations
Why an index is a name with generations under it, and why the name is what callers hold.
Synchronization
Manifests, epochs, and the leadership table; what keeps two writers from corrupting an index.
What a write guarantees
What a client can assume after a document write returns, when the change is durable and visible, and what a failover does to it.
Separating search and indexing nodes
Why searching and writing want different nodes, and what a deployment runs out of first as its index count grows.
Node memory and JVM configuration
Why the heap is sized against the page cache, and what each JVM flag is there for.
Trust model
What a key can reach, why it cannot be narrowed per end user, and why a browser must not hold one.
How sub-documents are stored
What a value of an `object` field costs to hold, change, and search.
Lucene compatibility
Why an index can outlive the code that can read it, and what the engine does about it.
Text analysis
Why one chain serves both sides of a search, where the two sides differ on purpose, and why a change to a chain needs a new generation.
Where a setting lives
Which of the index definition, the search settings, and the search request owns a setting, and how fast a change to each one reaches the nodes.
Relevance
The layers results are ordered by, what each one is for, and which of them a change reaches without reindexing.
Signal fields
Why a number a ranking reads is held apart from the document, what a refresh of it costs, and why refreshes go in large batches.
Exofind is built by Level Four AB and is available under the Apache License 2.0.