Elasticsearch: Indexing and Search
Learn the basics of Elasticsearch, a distributed search and analytics engine. Understand how to index documents and perform basic queries.
Elasticsearch: Indexing and Search is a free System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Welcome to Elasticsearch!
Welcome to the first lesson on the ELK Stack! We'll start with Elasticsearch, the 'E' in ELK.
Elasticsearch is a powerful, open-source distributed search and analytics engine. It's designed to store, search, and analyze large volumes of data quickly.
- Distributed: Runs across multiple servers.
- Real-time: Data is available for search almost instantly.
- Scalable: Easily handles growing data needs.
Data as JSON Documents
Elasticsearch stores data as JSON documents. Think of a document as a single record, like a row in a database, but more flexible.
Each document is a collection of fields (key-value pairs) and can contain various data types, including text, numbers, dates, and even other JSON objects.
Here's a simple example of a document:
{"user": "alice", "message": "Hello CoddyKit!"}Understanding Indices
In Elasticsearch, documents are organized into indices. An index is like a database in a relational database system, or a collection in a NoSQL database.
You can have multiple indices, and each index can store documents that are somewhat related. For example, you might have one index for 'logs' and another for 'products'.
- An index is a logical namespace.
- It groups similar documents.
- You search within specific indices.
Indexing Your First Document
Indexing is the process of adding or updating documents in an Elasticsearch index. When you index a document, Elasticsearch stores it and makes it searchable.
Each document needs a unique ID within its index. If you don't provide one, Elasticsearch will generate it for you.
We use HTTP API calls, typically with PUT or POST requests, to interact with Elasticsearch.
Indexing a Document Example
Let's index a simple log document into an index called my_logs. We'll specify an ID of 1.
Try running this command (assuming Elasticsearch is running on localhost:9200):
curl -X PUT "localhost:9200/my_logs/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"timestamp": "2023-10-27T10:00:00Z",
"level": "info",
"message": "Application started successfully"
}'Retrieving Documents by ID
Once a document is indexed, you can retrieve it using its unique ID. This is useful when you know exactly which document you want.
To retrieve a document, you send an HTTP GET request to the specific index and document ID endpoint.
This operation is very fast as Elasticsearch can directly fetch the document.
Retrieving a Document Example
Let's retrieve the document we just indexed with ID 1 from the my_logs index.
Run this command to see the stored document:
curl -X GET "localhost:9200/my_logs/_doc/1?pretty"Introduction to Searching
The real power of Elasticsearch comes from its searching capabilities. Instead of knowing an ID, you often want to find documents based on their content.
You can search across all documents in an index (or multiple indices) using various query types. Elasticsearch uses a query language based on JSON.
- Find documents by keywords.
- Filter by date ranges or specific values.
- Combine multiple search criteria.
Basic Search: Match All
The simplest search query is the match_all query. It returns all documents in the specified index.
This is often used to verify that documents are indexed correctly or as a starting point for more complex queries.
You send an HTTP GET request to the _search endpoint of your index.
Match All Query Example
Let's search for all documents in our my_logs index. You'll see the document we indexed earlier.
Run this command:
curl -X GET "localhost:9200/my_logs/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}'Quick Check on Indexing
You've learned about documents, indices, and how to index and retrieve data. Let's test your understanding of indexing.
Recap: Indexing and Basic Search
Great job! In this lesson, you've learned the fundamentals of Elasticsearch:
- Elasticsearch is a distributed search and analytics engine.
- Data is stored as JSON documents.
- Documents are organized into indices.
- Indexing adds or updates documents using
PUT/POSTrequests. - Documents can be retrieved by ID using
GETrequests. - Basic searching can be done with queries like
match_all.
Next, we'll dive deeper into Logstash, the 'L' in ELK, to ingest and process data!
Frequently asked questions
Is the “Elasticsearch: Indexing and Search” lesson free?
Yes — the full text of “Elasticsearch: Indexing and Search” is free to read here on the web, and the System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) course, upgrade to CoddyKit PRO.
What will I learn in “Elasticsearch: Indexing and Search”?
Learn the basics of Elasticsearch, a distributed search and analytics engine. Understand how to index documents and perform basic queries. You practise System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry)?
No prior experience is required. System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Elasticsearch: Indexing and Search” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) lesson?
Yes. Every System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Elasticsearch: Indexing and Search
- Logstash: Data Ingestion and Processing
- Kibana: Visualization and Dashboards
- Beats: Lightweight Data Shippers