How elastic/elasticsearch works
Elasticsearch is a distributed search, analytics, and data platform. The README’s principal workflow is sending documents through REST APIs, indexing them into an index or data stream, then searching them near real time. The graph also captures ingest-pipeline management and simulation, plus representative search and data-platform capabilities. Source excerpts are limited, so most internal runtime connections are left out; documented README relationships are cited, and the ingest simulation link is supported by the source index.
Main entry points: main/java REST APIs · SimulateIngestService.java Pipeline simulation · IngestService.java Ingest pipelines · main/java Data streams
Components 25
API and ingest
- REST APIs
server/src/main/java - Ingest pipelines
server/src/main/java/org/elasticsearch/ingest/IngestService.java - Pipeline simulation
server/src/main/java/org/elasticsearch/ingest/SimulateIngestService.java
Data and search
- Indices
server/src/main/java - Data streams
modules/data-streams/src/main/java - Search
server/src/main/java/org/elasticsearch/search/SearchService.java
Platform capabilities
- Vector search
server/src/main/java - Logs and analytics
server/src/main/java - APM telemetry
modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/APMMeterService.java
Core foundations
- Time values
libs/core/src/main/java/org/elasticsearch/core/TimeValue.java - Content encoding
libs/x-content/src/main/java/org/elasticsearch/xcontent/XContentBuilder.java - Exception handling
server/src/main/java/org/elasticsearch/ElasticsearchException.java - Async listeners
server/src/main/java/org/elasticsearch/action/ActionListener.java - Cluster changes
server/src/main/java/org/elasticsearch/cluster/ClusterChangedEvent.java - Cluster state
server/src/main/java/org/elasticsearch/cluster/ClusterState.java - Index metadata
server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java - Project metadata
server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java - Node discovery
server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNode.java - String utilities
server/src/main/java/org/elasticsearch/common/Strings.java - Stream input
server/src/main/java/org/elasticsearch/common/io/stream/StreamInput.java - Stream output
server/src/main/java/org/elasticsearch/common/io/stream/StreamOutput.java - Cluster settings
server/src/main/java/org/elasticsearch/common/settings/ClusterSettings.java - Setting definitions
server/src/main/java/org/elasticsearch/common/settings/Setting.java - Settings values
server/src/main/java/org/elasticsearch/common/settings/Settings.java
Other components
- Clients
Connections 5
- Clients → REST APIs: send requests
- REST APIs → Indices: index documents
- REST APIs → Data streams: index timestamped data
modules/data-streams/src/main/java/org/elasticsearch/datastreams/lifecycle/DataStreamLifecycleService.java - Indices → Search: search near real time
server/src/main/java/org/elasticsearch/search/SearchService.java - Pipeline simulation → Ingest pipelines: uses pipelines
server/src/main/java/org/elasticsearch/ingest/SimulateIngestService.java