Elasticsearch - Frozen Indices

Truy cập SQL

Nó là một thành phần cho phép các truy vấn giống SQL được thực thi trong thời gian thực chống lại Elasticsearch. Bạn có thể coi Elasticsearch SQL như một trình dịch, một trình dịch hiểu cả SQL và Elasticsearch và giúp dễ dàng đọc và xử lý dữ liệu trong thời gian thực, trên quy mô lớn bằng cách tận dụng các khả năng của Elasticsearch.

Ưu điểm của Elasticsearch SQL

  • Nó có tích hợp gốc – Mỗi và mọi truy vấn được thực thi hiệu quả dựa trên các nút có liên quan theo bộ nhớ cơ bản.
  • Không có bộ phận bên ngoài – Không cần phần cứng, quy trình, thời gian chạy hoặc thư viện bổ sung để truy vấn Elasticsearch.
  • Nhẹ và hiệu quả – nó bao gồm và bộc lộ SQL để cho phép tìm kiếm toàn văn phù hợp, trong thời gian thực.

Thí dụ:

PUT /schoollist/_bulk?refresh
   {"index":{"_id": "CBSE"}}
   {"name": "GleanDale", "Address": "JR. Court Lane", "start_date": "2011-06-02",
   "student_count": 561}
   {"index":{"_id": "ICSE"}}
   {"name": "Top-Notch", "Address": "Gachibowli Main Road", "start_date": "1989-
   05-26", "student_count": 482}
   {"index":{"_id": "State Board"}}
   {"name": "Sunshine", "Address": "Main Street", "start_date": "1965-06-01",
   "student_count": 604}

Khi chạy đoạn mã trên, chúng tôi nhận được phản hồi như hình dưới đây:

{
   "took" : 277,
   "errors" : false,
   "items" : [
      {
         "index" : {
            "_index" : "schoollist",
            "_type" : "_doc",
            "_id" : "CBSE",
            "_version" : 1,
            "result" : "created",
            "forced_refresh" : true,
            "_shards" : {
               "total" : 2,
               "successful" : 1,
               "failed" : 0
            },
            "_seq_no" : 0,
            "_primary_term" : 1,
            "status" : 201
         }
      },
      {
         "index" : {
            "_index" : "schoollist",
            "_type" : "_doc",
            "_id" : "ICSE",
            "_version" : 1,
            "result" : "created",
            "forced_refresh" : true,
            "_shards" : {
               "total" : 2,
               "successful" : 1,
               "failed" : 0
            },
            "_seq_no" : 1,
            "_primary_term" : 1,
            "status" : 201
         }
      },
      {
         "index" : {
            "_index" : "schoollist",
            "_type" : "_doc",
            "_id" : "State Board",
            "_version" : 1,
            "result" : "created",
            "forced_refresh" : true,
            "_shards" : {
               "total" : 2,
               "successful" : 1,
               "failed" : 0
            },
            "_seq_no" : 2,
            "_primary_term" : 1,
            "status" : 201
         }
      }
   ]
}

Truy vấn SQL

Ví dụ sau đây cho thấy cách chúng tôi đóng khung truy vấn SQL:

POST /_sql?format=txt
{
   "query": "SELECT * FROM schoollist WHERE start_date < '2000-01-01'"
}

Khi chạy đoạn mã trên, chúng tôi nhận được phản hồi như hình dưới đây

Address             | name          | start_date             | student_count
--------------------+---------------+------------------------+---------------
Gachibowli Main Road|Top-Notch      |1989-05-26T00:00:00.000Z|482
Main Street         |Sunshine       |1965-06-01T00:00:00.000Z|604

Lưu ý – Bằng cách thay đổi truy vấn SQL ở trên, bạn có thể nhận được các tập kết quả khác nhau.

Elasticsearch – Monitoring

Giám sát

Để theo dõi tình trạng của cụm, tính năng giám sát thu thập số liệu từ mỗi nút và lưu trữ chúng trong Chỉ số Elasticsearch. Tất cả các cài đặt liên quan đến giám sát trong Elasticsearch phải được đặt trong tệpasticsearch.yml cho mỗi nút hoặc, nếu có thể, trong cài đặt cụm động.

Để bắt đầu giám sát, chúng tôi cần kiểm tra cài đặt cụm, có thể được thực hiện theo cách sau:

GET _cluster/settings
{
   "persistent" : { },
   "transient" : { }
}

Mỗi thành phần trong ngăn xếp có trách nhiệm tự giám sát và sau đó chuyển tiếp các tài liệu đó đến cụm sản xuất Elasticsearch để định tuyến và lập chỉ mục (lưu trữ). Các quy trình định tuyến và lập chỉ mục trong Elasticsearch được xử lý bởi những người được gọi là người thu thập và nhà xuất khẩu.

Người sưu tầm

Collector chạy một lần cho mỗi khoảng thời gian thu thập để lấy dữ liệu từ các API công khai trong Elasticsearch mà nó chọn để theo dõi. Khi kết thúc thu thập dữ liệu, dữ liệu được giao hàng loạt cho người xuất để gửi đến cụm giám sát.

Chỉ có một bộ thu thập cho mỗi loại dữ liệu được thu thập. Mỗi người thu thập có thể tạo không hoặc nhiều tài liệu giám sát.

Nhà xuất khẩu

Elasticsearch - Monitoring

Các nhà xuất khẩu lấy dữ liệu được thu thập từ bất kỳ nguồn Elastic Stack nào và định tuyến nó đến cụm giám sát. Có thể định cấu hình nhiều hơn một nhà xuất khẩu, nhưng thiết lập chung và mặc định là sử dụng một nhà xuất khẩu duy nhất. Các nhà xuất khẩu có thể định cấu hình ở cả cấp độ nút và cụm.

Có hai loại nhà xuất khẩu trong Elasticsearch –

  • local – Nhà xuất khẩu này định tuyến dữ liệu trở lại cùng một cụm
  • http – Trình xuất ưu tiên, bạn có thể sử dụng để định tuyến dữ liệu vào bất kỳ cụm Elasticsearch được hỗ trợ nào có thể truy cập qua HTTP.

Trước khi nhà xuất khẩu có thể định tuyến dữ liệu giám sát, họ phải thiết lập một số tài nguyên Elasticsearch. Các tài nguyên này bao gồm các mẫu và đường ống dẫn nhập

Elasticsearch – Rollup Data

Công việc tổng hợp là một công việc định kỳ tóm tắt dữ liệu từ các chỉ số được chỉ định bởi một mẫu chỉ mục và cuộn nó vào một chỉ mục mới. Trong ví dụ sau, chúng tôi tạo một chỉ mục có tên là cảm biến với các tem thời gian ngày tháng khác nhau. Sau đó, chúng tôi tạo một công việc cuộn lên để cuộn dữ liệu từ các chỉ số này theo định kỳ bằng cách sử dụng công việc cron.

PUT /sensor/_doc/1
{
   "timestamp": 1516729294000,
   "temperature": 200,
   "voltage": 5.2,
   "node": "a"
}

Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:

{
   "_index" : "sensor",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

Bây giờ, thêm tài liệu thứ hai, v.v. cho các tài liệu khác.

PUT /sensor-2018-01-01/_doc/2
{
   "timestamp": 1413729294000,
   "temperature": 201,
   "voltage": 5.9,
   "node": "a"
}

Tạo một công việc tổng hợp

PUT _rollup/job/sensor
{
   "index_pattern": "sensor-*",
   "rollup_index": "sensor_rollup",
   "cron": "*/30 * * * * ?",
   "page_size" :1000,
   "groups" : {
      "date_histogram": {
         "field": "timestamp",
         "interval": "60m"
      },
      "terms": {
         "fields": ["node"]
      }
   },
   "metrics": [
      {
         "field": "temperature",
         "metrics": ["min", "max", "sum"]
      },
      {
         "field": "voltage",
         "metrics": ["avg"]
      }
   ]
}

Tham số cron kiểm soát thời gian và tần suất công việc kích hoạt. Khi lịch trình cron của công việc cuộn lên kích hoạt, nó sẽ bắt đầu cuộn lên từ vị trí đã dừng lại sau lần kích hoạt cuối cùng

Sau khi công việc đã chạy và xử lý một số dữ liệu, chúng ta có thể sử dụng Truy vấn DSL để thực hiện một số tìm kiếm.

GET /sensor_rollup/_rollup_search
{
   "size": 0,
   "aggregations": {
      "max_temperature": {
         "max": {
            "field": "temperature"
         }
      }
   }
}

Elasticsearch – Frozen Indices (xem thêm)

Trả lời