Elasticsearch là gì?
Elasticsearch là một hệ thống tìm kiếm và phân tích dữ liệu mã nguồn mở, được xây dựng trên nền tảng Apache Lucene. Nó được thiết kế để lưu trữ, tìm kiếm và phân tích lượng lớn dữ liệu một cách hiệu quả và linh hoạt, thường được sử dụng trong các ứng dụng tìm kiếm, phân tích log, và quản lý dữ liệu phân tán. Elasticsearch được phát triển và duy trì bởi Elastic.
Các câu truy vấn cơ bản trong Elasticsearch
Elasticsearch cung cấp một ngôn ngữ truy vấn mạnh mẽ gọi là Elasticsearch Query DSL để thực hiện các truy vấn. Dưới đây là một số câu truy vấn cơ bản trong Elasticsearch:
- Match All Query: dùng để lấy tất cả các tài liệu trong index
{ "query": { "match_all": {} }
}
- Match Query: dùng để tìm kiếm các tài liệu có trường nào đó chứa một giá trị cụ thể
{ "query": { "match": { "field_name": "search_term" } }
}
- Term Query: dùng để tìm kiếm các tài liệu có trường cụ thể chứa một giá trị cụ thể
{ "query": { "term": { "field_name": "exact_value" } }
}
- Bool Query: dùng để kết hợp nhiều điều kiện tìm kiếm lại bằng các toán tử logic là AND, OR, NOT.
{ "query": { "bool": { "must": [{ "match": { "field1": "value1" } }], "must_not": [{ "term": { "field2": "value2" } }], "should": [{ "match": { "field3": "value3" } }] } }
}
- Range Query: dùng để tìm kiếm các tài liệu trong một phạm vi giá trị cụ thể
{ "query": { "range": { "field_name": { "gte": "start_value", "lte": "end_value" } } }
}
- Wildcard Query: dùng để tìm kiếm các tài liệu dựa trên ký tự đại diện '*' hoặc '?'
{ "query": { "wildcard": { "field_name": "search*term" } }
}
- Fuzzy Query: dùng để tìm kiếm các tài liệu với từ gần đúng
{ "query": { "fuzzy": { "field_name": { "value": "search_term", "fuzziness": 1 } } }
}
Chú ý: Đây chỉ là một số câu truy vấn cơ bản và Elasticsearch hỗ trợ nhiều tính năng khác nhau như sorting, aggregations, và nhiều loại truy vấn phức tạp khác. Đối với mỗi trường hợp sử dụng, cần tìm hiểu thêm về các tính năng và cú pháp của Elasticsearch Query DSL.
Bài viết liên quan
Elastic Stack: Tìm hiểu về công cụ phân tích và trực quan hóa dữ liệu