Elasticsearch là một công cụ tìm kiếm mạnh mẽ, và việc quản lý tài liệu (documents) bên trong nó là rất cần thiết để tối ưu hóa khả năng tìm kiếm và phân tích dữ liệu. Trong bài viết này, chúng ta sẽ điểm qua cách sử dụng các API của Elasticsearch để thêm, cập nhật và xóa tài liệu một cách hiệu quả.
Tạo Một Tài Liệu Mới
Khi bắt đầu, một index trống mà không có documents sẽ không mang lại nhiều giá trị. Để thêm một tài liệu, đầu tiên ta cần một tệp JSON mẫu. Ví dụ, chúng ta sẽ tạo một tài liệu cho một cuốn sách như sau:
book.json
{
"title": "Elasticsearch: The Definitive Guide. A Distributed Real-Time Search and Analytics Engine",
"categories": [
{ "name": "analytics" },
{ "name": "search" },
{ "name": "database store" }
],
"publisher": "O’Reilly",
"description": "Một hướng dẫn thực tiễn không chỉ giúp bạn tìm kiếm và phân tích dữ liệu với Elasticsearch mà còn giúp bạn giải quyết những phức tạp của ngôn ngữ tự nhiên, vị trí địa lý và mối quan hệ.",
"published_date": "2015-02-07",
"isbn": "978-1449358549",
"rating": 4
}
Trước khi gửi tài liệu này lên Elasticsearch, điều cần thiết là xác định id cho tài liệu. Mỗi tài liệu trong Elasticsearch đều có một identifier duy nhất được lưu trữ trong trường _id
. Trong trường hợp này, chúng ta sẽ sử dụng isbn làm ID. Để gửi tài liệu lên, thực hiện lệnh sau:
$ http PUT https://localhost:9200/catalog/books/978-1449358549 < book.json
Kết Quả
Khi gửi tài liệu thành công, bạn sẽ nhận được kết quả như sau:
{
"_id": "978-1449358549",
"_index": "catalog",
"_shards": {
"failed": 0,
"successful": 3,
"total": 3
},
"_type": "books",
"_version": 1,
"created": true,
"result": "created"
}
Thêm Tác Giả Cho Cuốn Sách
Elasticsearch cho phép bạn thêm các tác giả cho mỗi cuốn sách. Chúng ta sẽ tạo một danh sách các tác giả trong file authors.json:
authors.json
[
{
"first_name": "Clinton",
"last_name": "Gormley",
"_parent": "978-1449358549"
},
{
"first_name": "Zachary",
"last_name": "Tong",
"_parent": "978-1449358549"
}
]
Thay vì thêm từng tác giả một, chúng ta sẽ sử dụng Bulk Document API. Đầu tiên, chuyển đổi authors.json sang định dạng bulk:
authors-bulk.json
{ "index": { "_index": "catalog", "_type": "authors", "_id": "1", "_parent": "978-1449358549" } }
{ "first_name": "Clinton", "last_name": "Gormley" }
{ "index": { "_index": "catalog", "_type": "authors", "_id": "2", "_parent": "978-1449358549" } }
{ "first_name": "Zachary", "last_name": "Tong" }
Gửi tài liệu bulk lên Elasticsearch:
$ http POST https://localhost:9200/_bulk < authors-bulk.json
Kiểm Tra và Xóa Tài Liệu
Để kiểm tra tài liệu đã thêm, bạn có thể sử dụng lệnh sau:
Lấy Lại Cuốn Sách
$ http https://localhost:9200/catalog/books/978-1449358549
Lấy Lại Tác Giả
$ http https://localhost:9200/catalog/authors/1?parent=978-1449358549
Nếu bạn cần xóa một tài liệu, sử dụng API xóa tương tự:
$ http DELETE https://localhost:9200/catalog/books/978-1449358549
Lưu ý rằng khi xóa một parent document, các child documents không bị xóa tự động.
Thông Tin Chi Tiết Về Tài Liệu
Để lấy thông tin thống kê về các terms trong một tài liệu, bạn có thể sử dụng Term Vectors API:
$ http https://localhost:9200/catalog/books/978-1449358549/_termvectors?fields=description
Kết quả sẽ cho bạn biết điều gì đã xảy ra với các terms trong tài liệu.
Với những kiến thức trên, bạn đã sẵn sàng để quản lý tài liệu trong Elasticsearch một cách hiệu quả! Hãy khám phá và tối ưu hóa dữ liệu của bạn ngay hôm nay.