reference:https://www.elastic.co/docs
ElasticSearch Overview
ElasticSearch is a distributed, RESTful search and analytics engine built on Apache Lucene. It stores, searches, and analyzes large volumes of data quickly and in near real-time.
Principle
- Indexing: Data is stored in indices, which are collections of documents. Each document is a JSON object.
- Sharding & Replication: Indices are split into shards for scalability and replicated for fault tolerance.
- Search: Uses inverted indices for fast full-text search.
- RESTful API: All operations (CRUD, search, aggregation) are exposed via HTTP endpoints.
Usage
-
Install ElasticSearch
- Download from elastic.co
- Start with
bin/elasticsearch
-
Basic Concepts
- Index: Like a database.
- Type: Deprecated, previously like a table.
- Document: A JSON object.
- Field: Key-value pairs in a document.
API Integration
ElasticSearch exposes a RESTful API. You can use curl, Postman, or any HTTP client.
1. Index a Document
bash
curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
"title": "ElasticSearch Guide",
"content": "ElasticSearch is a search engine."
}
'
2. Get a Document
bash
curl -X GET "localhost:9200/my_index/_doc/1"
3. Search Documents
bash
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"content": "search engine"
}
}
}
'
4. Update a Document
bash
curl -X POST "localhost:9200/my_index/_update/1" -H 'Content-Type: application/json' -d'
{
"doc": {
"title": "Updated Title"
}
}
'
5. Delete a Document
bash
curl -X DELETE "localhost:9200/my_index/_doc/1"
Java API Example
Add dependency in pom.xml:
xml
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.0</version>
</dependency>
Sample code:
java
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.common.xcontent.XContentType;
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
IndexRequest request = new IndexRequest("my_index").id("1")
.source("{\"title\":\"ElasticSearch Guide\"}", XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
client.close();
Summary:
ElasticSearch is a scalable, distributed search engine. Use its RESTful API for CRUD and search operations. Integrate via HTTP or official clients (Java, Python, etc.).