1. Cơ Bản Về API Search
1.1 Lấy Toàn Bộ Dữ Liệu
GET _search
1.2 Giải Thích Cấu Trúc Phản Hồi
{
"took": 280,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 5,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "products",
"_type": "_doc",
"_id": "101",
"_score": 1.0,
"_source": {
"product_name": "SSD 1TB NVMe",
"brand": "BrandX",
"price": 250.0,
"stock": 50
}
}
]
}
}
1.3 Cơ Chế Timeout
Thiết lập giới hạn thời gian cho từng shard:
GET _search?timeout=500ms
- Đơn vị hỗ trợ: ms (mili giây), s (giây), m (phút)
- Kết quả trả về có thể không đầy đủ nếu quá thời gian quy định
1.4 Truy Vấn Nhiều Chỉ Mục
# Truy vấn một chỉ mục
GET logs_2023/_search
# Truy vấn nhiều chỉ mục
GET sales,jobs/_search
# Sử dụng wildcard
GET data-2023-*,backup_*/_search
2. Sử Dụng URI Search
2.1 Tham Số Phân Trang
GET _search?from=0&size=5
Thay thế bằng POST khi không hỗ trợ GET có body:
POST _search
{
"from": 0,
"size": 5
}
2.2 Danh Sách Tham Số
| Tham Số | Mô Tả |
|---|---|
| q | Chuỗi truy vấn |
| sort | Quy tắc sắp xếp: price:desc, _score |
| source_filtering | Lọc trường trả về: _source_include, _source_exclude |
2.3 Ví Dụ Thực Tế
# Tìm sản phẩm có giá > 200
GET products/_search?q=price>200
# Tìm tài liệu không chứa từ "error"
GET logs/_search?q=-error
# Kiểm tra tồn tại tài liệu
GET inventory/_search?q=item:ABC123&size=0&terminate_after=1
2.4 Nguyên Lý Tìm Kiếm Khi Không Chỉ Định Trường
Khi không chỉ định trường tìm kiếm:
GET documents/_search?q=contract
- Elasticsearch 6.0+ không sử dụng trường
_allmặc định - Thay thế bằng tham số
default_fieldhoặc chỉ định danh sách trường tìm kiếm