0
0
Posts
Admin Team
Admin Teamtechmely

Khám Phá Indices Trong Elasticsearch: Hướng Dẫn Tạo và Quản Lý Index

Đăng vào 1 tuần trước

• 5 phút đọc

Chủ đề:

Elasticsearch

Giới thiệu về Indices trong Elasticsearch

Elasticsearch là một công cụ tìm kiếm mạnh mẽ, và việc hiểu rõ về indices là rất quan trọng trong quá trình triển khai và sử dụng. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo và quản lý indices trong Elasticsearch, từ việc kiểm tra các indices hiện có cho đến việc thiết lập settings và mappings.

Kiểm Tra Các Indices Hiện Có

Trước khi bắt đầu tạo index mới, chúng ta cần kiểm tra xem có indices nào đã được tạo ra hay chưa. Sử dụng Indices APIs để kiểm tra trạng thái hiện tại của cluster:

Copy
$ http https://localhost:9200/_stats

Kết quả trả về sẽ cho chúng ta biết cluster hiện tại chưa có bất kỳ index nào:

Copy
{
  "_all": {
    "primaries": {},
    "total": {}
  },
  "_shards": {
    "failed": 0,
    "successful": 0,
    "total": 0
  },
  "indices": {}
}

Tạo Index Mới cho Book Catalog

Với cluster không có indices, chúng ta có thể tiến hành tạo một index cho book catalog. Elasticsearch giao tiếp qua JSON, vì vậy trước tiên chúng ta sẽ tạo một file JSON để định nghĩa settings và mappings.

Nội Dung của Tệp catalog-index.json

json Copy
{
  "settings": {
    "index": {
      "number_of_shards": 5,
      "number_of_replicas": 2
    }
  },
  "mappings": {
    "books": {
      "_source": { "enabled": true },
      "properties": {
        "title": { "type": "text" },
        "categories": {
          "type": "nested",
          "properties": {
            "name": { "type": "text" }
          }
        },
        "publisher": { "type": "keyword" },
        "description": { "type": "text" },
        "published_date": { "type": "date" },
        "isbn": { "type": "keyword" },
        "rating": { "type": "byte" }
      }
    },
    "authors": {
      "properties": {
        "first_name": { "type": "keyword" },
        "last_name": { "type": "keyword" }
      },
      "_parent": { "type": "books" }
    }
  }
}

Tạo Index Bằng Index API

Sau khi đã chuẩn bị tệp JSON, chúng ta có thể tạo index cho catalog bằng cách sử dụng Index API:

Copy
$ http PUT https://localhost:9200/catalog < catalog-index.json

Khi thực hiện thành công, chúng ta sẽ nhận được phản hồi như sau:

Copy
{
  "acknowledged": true,
  "shards_acknowledged": true
}

Xác Nhận Index Được Tạo Thành Công

Để kiểm tra xem index đã được tạo thành công hay chưa, chúng ta có thể kiểm tra lại settings của nó:

Copy
$ http https://localhost:9200/catalog/_settings

Kết quả sẽ cho chúng ta biết các thông tin chi tiết về index vừa tạo:

Copy
{
  "catalog": {
    "settings": {
      "index": {
        "creation_date": "1487428863824",
        "number_of_replicas": "2",
        "number_of_shards": "5",
        "provided_name": "catalog",
        "uuid": "-b63dCesROC5UawbHz8IYw",
        "version": {
          "created": "5020099"
        }
      }
    }
  }
}

Thay Đổi Settings Sau Khi Tạo Index

Một câu hỏi thường gặp là chúng ta có thể thay đổi số lượng shards của index sau khi đã tạo hay không. Đáng tiếc là câu trả lời là không. Nếu bạn thử thay đổi, bạn sẽ nhận được lỗi:

Copy
$ echo '{"index":{"number_of_shards":6}}' | http PUT https://localhost:9200/catalog/_settings

Kết quả lỗi là:

Copy
{
  "error": {
    "reason": "can't change the number of shards for an index",
    "root_cause": [],
    "type": "illegal_argument_exception"
  },
  "status": 400
}

Kiểm Tra Mappings của Index

Chúng ta cũng có thể kiểm tra mapping types của index bằng lệnh sau:

Copy
$ http https://localhost:9200/catalog/_mapping

Kết quả sẽ cho biết các loại mappings hiện có trong index:

Copy
{
  "catalog": {
    "mappings": {
      "authors": { ... },
      "books": { ... }
    }
  }
}

Phân Tích Field Trước Khi Thêm Dữ Liệu

Một tính năng cực kỳ hữu ích của Indices APIs là khả năng thực hiện analysis process trên một index mapping type mà không cần gửi bất kỳ document nào. Điều này rất hữu ích để kiểm tra xem các mapping parameters có hoạt động chính xác hay không trước khi thêm dữ liệu thực tế vào Elasticsearch index:

Copy
$ http https://localhost:9200/catalog/_analyze field=books.title text="Elasticsearch: The Definitive Guide"

Kết quả:

Copy
{
  "tokens": [
    {
      "end_offset": 13,
      "position": 0,
      "start_offset": 0,
      "token": "elasticsearch",
      "type": ""
    },
    {
      "end_offset": 18,
      "position": 1,
      "start_offset": 15,
      "token": "the",
      "type": ""
    },
    {
      "end_offset": 88,
      "position": 11,
      "start_offset": 82,
      "token": "engine",
      "type": ""
    }
  ]
}

Quản Lý Trạng Thái của Index

Mỗi index trong Elasticsearch có thể ở trạng thái open hoặc closed. Để thay đổi trạng thái của index, bạn có thể sử dụng API sau:

Copy
$ http POST https://localhost:9200/catalog/_open

Phản hồi thành công sẽ hiển thị:

Copy
{
  "acknowledged": true
}

Kết Luận

Trong bài viết này, chúng ta đã thảo luận về cách tạo và quản lý indices trong Elasticsearch. Việc hiểu rõ về indices không chỉ giúp chúng ta tổ chức dữ liệu tốt hơn mà còn tối ưu hóa hiệu suất tìm kiếm trong ứng dụng của mình. Hy vọng những hướng dẫn này sẽ hữu ích cho bạn trong quá trình làm việc với Elasticsearch!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào