Hướng dẫn tạo Index và quản lý Index trong Elasticsearch

Hướng dẫn tạo Index và quản lý Index trong ElasticsearchCuongquach.com | Khi bắt đầu bài này trong series về Elasticsearch (ES) thì hẳn bạn phải có thể phân biệt các kiến thức cơ bản về khái niệm Index, Document, Type,… còn nếu chưa thì bạn nên tìm hiểu những khái niệm đó trước nhé. Vào thời điểm bạn quản lý một hệ thống Logging Elasticsearch thì chắc chắn quá trình khởi tạo một Index trong Elasticsearch gần như là kiến thức cơ bản mà ai cũng cần nắm bắt.

tạo index quản lý index trong elasticsearch

Có thể bạn quan tâm chủ đề khác
Tìm hiểu dịch vụ logstash trong hệ thống ELK Stack Logging
Ebook Beginning Elastic Stack
Giám sát log server Linux thời gian thực với công cụ Log.io
Các khái niệm về log trong Linux

Index trong Elasticsearch là gì ?

Index là một tập hợp lưu trữ các dữ liệu document và thuộc tính document, thuộc về một Type trong Elasticsearch. Nếu so sánh dễ mường tượng nhất, thì bạn có thể so sánh Index giống như khái niệm Database trong hệ Cơ Sở Dữ Liệu Quan Hệ, mặc dù không hoàn toàn như vậy.

Index có thể lưu trữ rất nhiều document trong một Type và một Index được định danh bởi tên với kiểu chữ thường (không viết chữ hoa). Tên của Index sẽ được dùng để thực hiện quá trình index, tìm kiếm, cập nhật,… .

Tương tác với Elasticsearch

Nhằm nhắc lại với bạn rằng chúng ta sẽ tương tác với Elasticsearch qua REST API với các phương thức HTTP Method như “GET, POST, PUT, DELETE” trong phần thực hành của bài viết này. REST API sẽ có format như sau :

http://host:port/[index]/[type]/[_action/id]

Với các ví dụ ở dưới thì ‘localhost‘ chính là máy chủ ES của bạn, bạn đang đứng ở terminal thực thi lệnh trên máy chủ ES. Bạn có thể sử dụng một số chương trình API Tool Client như Postman,.. hoặc có thể sử dụng chương trình lệnh ‘curl‘ trên Linux.

1. Tạo Index trong Elasticsearch

Về dữ liệu document trong ES, thì các document có thể nằm trong một Index cụ thể hoặc ở các Index khác. Một số quy ước về cách đặt tên Index như sau :

  • Chữ thường (không chữ hoa)
  • Không chứa kí tự đặc biệt sau: \, /, *, ?, “, <, >, |, ` ` (space character), ,, #
  • Không bắt đầu bằgn các kí tự: -, _ , +
  • Giới hạn 255 kí tự

Thông thường Elasticsearch cho phép bạn tạo Index theo tên mong muốn, nhưng nếu bạn có các client gửi dữ liệu về Elasticsearch thì ES có sẵn tính năng khởi tạo tên Index ngẫu nhiên để chứa

Thông số Index
Một Index khi được tạo ra sẽ có thể kèm các thông số liên quan như sau :

# curl -X PUT "localhost:9200/cuongquach-company" -H 'Content-Type: application/json' -d'
{
    "settings" : {
        "index" : {
            "number_of_shards" : 4, 
            "number_of_replicas" : 1
        }
    }
}
'

Bạn sẽ nhận được response như sau là thành công tạo Index .

{"acknowledged":true,"shards_acknowledged":true,"index":"cuongquach-company"}

(còn một vài ví dụ tạo index sẽ bổ sung sau)

2. Liệt kê các Index với thông số

Bạn có thể liệt kê các Index đang tồn tại trên hệ thống ES Cluster như sau :

# curl -X GET "localhost:9200/_cat/indices?v"
health status index              uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana            I1PNVZWrQ-qDutbGN2jAhA   1   0  2    0     10.4kb         10.4kb
yellow open   cuongquach-company C4UD3u4bS6qKq8uWARFIgg   4   1  0    0     1kb            1kb

Bạn dễ dàng thấy thông tin về : tình trạng index, tên index, uuid index, số lượng primary shard/replica shard của Index đó, số lượng document của index,….

Chú thích :
?v : tham số action này giúp trả về tên header của từng cột dữ liệu. Nếu không có giá trị này thì dữ liệu trả về sẽ như sau :

# curl -X GET "localhost:9200/_cat/indices"
green  open   .kibana            I1PNVZWrQ-qDutbGN2jAhA   1   0     2  0     10.4kb     10.4kb
yellow open   cuongquach-company C4UD3u4bS6qKq8uWARFIgg   4   1     0  0        1kb        1kb

3. Kiểm tra thông tin trạng thái một Index

Bạn muốn kiểm tra thông tin cụ thể về một Index như alias, mapping, settings, uuid,... thì có thể action với cú pháp sau :

# curl -X GET http://localhost:9200/cuongquach-company?pretty
{
  "cuongquach-company" : {
    "aliases" : { },
    "mappings" : {
      "employee" : {
        "properties" : {
          "name" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "1535098514103",
        "number_of_shards" : "4",
        "number_of_replicas" : "3",
        "uuid" : "C4UD3u4bS6qKq8uWARFIgg",
        "version" : {
          "created" : "6030099"
        },
        "provided_name" : "cuongquach-company"
      }
    }
  }
}

4. Thêm dữ liệu vào Index

Giờ chúng ta sẽ thử thêm dữ liệu document vào Index , với tên một nhân viên ở id đầu tiên để xem Index ‘cuongquach-company’ đã sử dụng được chưa ? Đã có thể chứa dữ liệu document hay không ?

Từ Elasticsearch phiên bản 6.x đến 7.x thì một Index chỉ có thể có 1 Type và mỗi document sẽ cần có một giá trị ‘_id‘ và ‘_type‘ được lấy từ định dạng URL mà bạn gửi truy vấn HTTP API hoặc các thông tin đó sẽ được khởi tạo ngẫu nhiên. Tên ID Document có thể là số hoặc chữ.

Cấu trúc format URL khi thêm dữ liệu Document đó sẽ theo dạng như sau :

http://host:port/[index]/[type]/[document]

Cùng truyền dữ liệu như sau nào.

# curl -X POST "localhost:9200/cuongquach-company/employee/1" -H 'Content-Type: application/json' -d'
{
    "name": "cuong.quachchi"
}
'

{
  "_index": "cuongquach-company",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 0,
  "_primary_term": 2
}

Với output trả về từ Elasticsearch bạn đã thấy kết quả về document _id=1 của chúng ta. Dùng cú pháp sau để coi thông tin về dữ liệu document _id 1 .

# curl -X GET http://localhost:9200/cuongquach-company/employee/1?pretty
{
  "_index" : "cuongquach-company",
  "_type" : "employee",
  "_id" : "1",
  "_version" : 3,
  "found" : true,
  "_source" : {
    "name" : "cuong.quachchi"
  }
}

5. Mở/Đóng Index

Nếu bạn có nhu cầu bảo trì dữ liệu của một Index hoặc thay đổi cấu hình Index, bạn có thể đóng (close) Index lại giúp cho các hoạt động read/write không thể thực hiện trên Index đó. Sau khi bạn bảo trì hoàn tất bạn có thể mở lại Index đó để tiếp tục sử dụng Index.

+ Đóng Index

POST /{index}/_close

+ Mở Index

POST /{index}/_open

Ví dụ, bạn đóng Index cuongquach-company :

# curl -X POST 'localhost:9200/cuongquach-company/_close'
{"acknowledged":true}

# curl -X POST 'localhost:9200/cuongquach-company/_open'
{"acknowledged":true,"shards_acknowledged":true}

6. Đọc dữ liệu document từ một Index

Nếu bạn có nhu cầu đọc các thông tin dữ liệu như document trong một Index thì bạn có thể sử dụng action ‘_search‘ .

# curl -X GET "localhost:9200/cuongquach-company/_search?pretty"
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 4,
    "successful" : 4,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 3,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "cuongquach-company",
        "_type" : "employee",
        "_id" : "3",
        "_score" : 1.0,
        "_source" : {
          "name" : "cuong.quachchi"
        }
      },
      {
        "_index" : "cuongquach-company",
        "_type" : "employee",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "cuong.quachchi"
        }
      },
      {
        "_index" : "cuongquach-company",
        "_type" : "employee",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "name" : "cuong.quachchi2"
        }
      }
    ]
  }
}

7. Cập nhật thông số của một Index

Nếu bạn muốn thay đổi một số thông số cài đặt cho Index như số lượng primary shard/replica shard,… Giả sử bạn muốn thay đổi thông số replica shard là 3 cho Index ‘cuongquach-company‘ thì bạn có thể làm như sau (replica shard , có thể thay đổi thông số khi đã vận hành).

PUT /[index]/_settings

Đầu tiên là cần close Indexcuongquach-company‘ , phải close Index thì mới được phép cập nhật các thông số.

# curl -X POST 'localhost:9200/cuongquach-company/_close'
{"acknowledged":true}
# curl -X GET "localhost:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana I1PNVZWrQ-qDutbGN2jAhA 1 0 2 0 10.4kb 10.4kb
close cuongquach-company C4UD3u4bS6qKq8uWARFIgg

Tiến hành cập nhật thông số cấu hình cho Index và open index trở lại.

# curl -X PUT "localhost:9200/cuongquach-company/_settings" -H 'Content-Type: application/json' -d'
{
    "index" : {
        "number_of_replicas" : 3
    }
}
'

# curl -X POST 'localhost:9200/cuongquach-company/_open'
{"acknowledged":true,"shards_acknowledged":true}

Kiểm tra lại nào, xem số lượng replica shard của Index ‘cuongquach-company‘ thay đổi không ?!

# curl -X GET "localhost:9200/_cat/indices?v"
health status index              uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana            I1PNVZWrQ-qDutbGN2jAhA   1   0    2            0     10.4kb         10.4kb
yellow open   cuongquach-company C4UD3u4bS6qKq8uWARFIgg   4   3    0            0        1kb            1kb

8. Xoá một Index

Khi mà bạn không cần một Index nào đó nữa và có nhu cầu xoá nó đi thì có thể sử dụng method HTTP DELETE khi gửi API HTTP.

# curl -X DELETE "localhost:9200/cuongquach-company"
{"acknowledged":true}

Method HTTP DELETE có thể xoá một hoặc nhiều Index cùng một lúc, với dấu ‘,’ ngăn cách giữa các tên Index.

# curl -X DELETE "localhost:9200/cuongquach-company1,cuongquach-test1,cuongquach-demo1"
{"acknowledged":true}

Lưu ý:
– Nếu bạn đã xoá một Index rồi thì sẽ không cách nào khôi phục lại dữ liệu Index đó, trừ khi bạn khôi phục từ bản snapshot nào đó mà bạn có sử dụng.

Tổng kết

Nhìn chung vẫn còn kha khá các hoạt động quản lý thao tác với Index trong  Elasticsearch. Nhưng với những phần tóm gọn ở trên cũng đã đủ để bạn có thể thao tác các chức năng quản lý Index của Elasticsearch. Hy vọng các nội dung trên giúp ích cho các bạn và đừng ngại ghé thăm Cuongquach.com nhé.

Nguồn: https://cuongquach.com/

Previous articleTài liệu lập trình Java Spring MVC Tiếng Việt – ĐH FPT
Next articleKali Linux là gì? Giới thiệu Hệ Điều Hành Kali Linux
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !