Elasticsearch
Giới thiệu
Elasticsearch là search engine phân tán, được xây dựng trên Apache Lucene. Nó cung cấp khả năng tìm kiếm full-text, phân tích log, và lưu trữ dữ liệu ở dạng JSON document.
┌──────────────────────────────────────────────────────────────┐
│ Elasticsearch Cluster │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ │ (Master) │ │ (Data) │ │ (Data) │ │
│ │ │ │ │ │ │ │
│ │ Shard 1P │ │ Shard 1R │ │ Shard 2P │ │
│ │ Shard 2R │ │ Shard 2P │ │ Shard 1R │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ P = Primary Shard, R = Replica Shard │
└──────────────────────────────────────────────────────────────┘
Stack
Tài liệu này sử dụng Elastic.Clients.Elasticsearch - .NET client chính thức cho Elasticsearch 8+.
dotnet add package Elastic.Clients.Elasticsearch
Mục lục
| # | Chủ đề | Mô tả |
|---|---|---|
| 1 | Concepts Cơ bản & Kết nối | Index, Shard, Replica, DI setup trong ASP.NET Core |
| 2 | Mapping & Field Types | Attribute mapping, Fluent mapping, text vs keyword, nested |
| 3 | Indexing Documents | CRUD, Bulk API, Upsert, Ingest Pipeline qua .NET |
| 4 | Basic Search | Match, Term, Range, Bool query, Sorting qua .NET |
| 5 | Query DSL Nâng cao | Multi-match, Fuzzy, Nested, Highlight, Scroll |
| 6 | Aggregations | Metric, Terms, Range, Date Histogram, Faceted Search |
| 7 | Analyzers & Tokenizers | Built-in analyzers, Custom analyzer, Autocomplete |
| 8 | Performance Tuning | Filter vs must, Source filtering, Search After, ILM |
| 9 | Cluster Management | Health check, ILM, Alias, Snapshot, ASP.NET Core integration |
Use Cases
| Use Case | Phù hợp |
|---|---|
| Full-text search | ✅ Mạnh nhất |
| Log analytics (ELK Stack) | ✅ Phổ biến |
| Application search | ✅ |
| Geospatial search | ✅ |
| Real-time analytics | ✅ |
| Primary database | ❌ Không phù hợp |
| Transactional data | ❌ Không phù hợp |