Hướng dẫn tạo một cụm Elasticsearch

Trừ khi bạn đang sử dụng Elasticsearch để phát triển và thử nghiệm, việc tạo và duy trì một cụm Elasticsearch sẽ là một công việc chiếm khá nhiều thời gian của bạn. Elasticsearch là một công cụ phân tích và tìm kiếm cực kỳ mạnh mẽ, và một phần của sức mạnh này nằm ở khả năng mở rộng quy mô để có hiệu suất và độ ổn định tốt hơn.

Hướng dẫn này sẽ cung cấp một số thông tin về cách thiết lập cụm Elasticsearch và sẽ thêm một số mẹo hoạt động và phương pháp hay nhất để giúp bạn bắt đầu. Cần nhấn mạnh rằng mỗi thiết lập Elasticsearch có thể sẽ khác nhau tùy thuộc vào nhiều yếu tố, bao gồm khối lượng công việc trên máy chủ, lượng dữ liệu được lập chỉ mục, thông số kỹ thuật phần cứng và thậm chí cả kinh nghiệm của người vận hành.

Cụm Elasticsearch là gì?

Như tên của nó, cụm Elasticsearch là một nhóm gồm một hoặc nhiều nút Elasticsearch được kết nối với nhau. Sức mạnh của một cụm Elasticsearch nằm ở việc phân phối các tác vụ, tìm kiếm và lập chỉ mục, trên tất cả các nút trong cụm.

Các nút trong cụm Elasticsearch có thể được giao các công việc hoặc trách nhiệm khác nhau:

  • Data nodes - lưu trữ dữ liệu và thực hiện các hoạt động liên quan đến dữ liệu như tìm kiếm và tổng hợp.
  • Master nodes - phụ trách các hành động cấu hình và quản lý toàn cụm như thêm và xóa các nút.
  • Client nodes - chuyển tiếp các yêu cầu cụm đến master node và các yêu cầu liên quan đến dữ liệu tới các data node.
  • Ingest nodes - để xử lý document trước khi lập chỉ mục.
  • * Lưu ý: Tribe nodes tương tự như các nút liên kết chéo hoặc liên kết, không được dùng nữa từ Elasticsearch 5.4.

Theo mặc định, mỗi nút được tự động gán một số nhận dạng hoặc tên duy nhất, được sử dụng cho mục đích quản lý và thậm chí còn trở nên quan trọng hơn trong môi trường nhiều nút hoặc nhiều cụm.

Khi được cài đặt, một nút Elasticsearch duy nhất sẽ tạo thành một cụm nút đơn mới có tên “elasticsearch”, nhưng như chúng ta sẽ thấy ở phần sau của bài viết này, nó cũng có thể được cấu hình để tham gia một cụm hiện có bằng cách sử dụng tên cụm. Không cần phải nói, các nút này cần phải có khả năng xác định nhau để có thể kết nối.

Cài đặt một cụm Elasticsearch

Như mọi khi, có nhiều cách để thiết lập cụm Elasticsearch. Bạn có thể sử dụng công cụ quản lý cấu hình như Puppet hoặc Ansible để tự động hóa quy trình. Tuy nhiên, trong trường hợp này, chúng tôi sẽ hướng dẫn bạn cách thiết lập thủ công một cụm bao gồm một nút chính và hai nút dữ liệu, tất cả đều trên các phiên bản Ubuntu 16.04 trên AWS EC2 chạy trong cùng một VPC. Nhóm bảo mật đã được cấu hình để cho phép truy cập từ mọi nơi bằng SSH và TCP 5601 (Kibana).

Cài đặt Java

Elasticsearch được xây dựng trên Java và yêu cầu ít nhất Java 8 (1.8.0_131 trở lên) để chạy. Do đó, bước đầu tiên của chúng ta là cài đặt Java 8 trên tất cả các nút trong cụm. Xin lưu ý rằng phải được cài đặt cùng một phiên bản trên tất cả các nút Elasticsearch trong cụm.

Lặp lại các bước sau trên tất cả các máy chủ được chỉ định cho cụm của bạn.

Trước tiên, hãy cập nhật hệ thống của bạn:

sudo apt-get update

Sau đó, cài đặt Java với lệnh sau:

sudo apt-get install default-jre

Kiểm tra phiên bản Java của bạn bây giờ sẽ cung cấp cho bạn kết quả sau hoặc tương tự:

java -version
# openjdk version "1.8.0_191"
# OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) 
# OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Cài đặt các nút Elasticsearch

Bước tiếp theo của chúng ta là cài đặt Elasticsearch. Như phần trước, hãy lặp lại các bước trong phần này trên tất cả các máy chủ của bạn.

Trước tiên, bạn cần thêm signing key của Elastic để có thể xác minh gói đã tải xuống (bỏ qua bước này nếu bạn đã cài đặt các gói từ Elastic):

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Đối với Debian, sau đó chúng ta cần cài đặt gói apt-transport-https :

sudo apt-get install apt-transport-https

Bước tiếp theo là thêm định nghĩa kho lưu trữ vào hệ thống của bạn:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Tất cả những gì còn lại cần làm là cập nhật kho lưu trữ của bạn và cài đặt Elasticsearch:

sudo apt-get update
sudo apt-get install elasticsearch

Cấu hình cụm Elasticsearch

Bước tiếp theo của chúng ta là thiết lập cụm để các nút có thể kết nối và giao tiếp với nhau.

Đối với mỗi nút, hãy mở tệp cấu hình Elasticsearch:

sudo vim /etc/elasticsearch/elasticsearch.yml

Tệp này khá dài và chứa nhiều cài đặt cho các phần khác nhau. Duyệt qua tệp và cập nhật các cấu hình sau (thay thế các IP bằng các IP nút của bạn. node.name cho 3 server lần lượt là es-node-1, es-node-2 và es-node-3. Trong đó es-node-1 là master node nên thiết lập node.master: true, còn es-node-2 và es-node-3 là data node nên thiết lập node.data: true):

#give your cluster a name.
cluster.name: my-cluster

#give your nodes a name (change node number from node to node).
node.name: "es-node-1"

#define node 1 as master-eligible:
node.master: true

#define nodes 2 and 3 as data nodes:
node.data: true

#enter the private IP and port of your node:
network.host: 172.11.61.27
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["172.11.61.27", "172.31.22.131","172.31.32.221"]

Lưu và thoát.

Chạy cụm Elasticsearch của bạn

Bây giờ bạn đã sẵn sàng khởi động các nút Elasticsearch của mình và xác minh rằng chúng đang giao tiếp với nhau dưới dạng một cụm.

Đối với mỗi nút, hãy chạy lệnh sau:

sudo service elasticsearch start

Nếu mọi thứ được định cấu hình chính xác, cụm Elasticsearch của bạn sẽ được thiết lập và chạy. Để xác minh mọi thứ đang hoạt động như mong đợi, hãy truy vấn Elasticsearch từ bất kỳ nút cụm nào:

curl -XGET 'http://localhost:9200/_cluster/state?pretty'

Response phải nêu chi tiết về cụm và các nút của nó:

{
  "cluster_name" : "my-cluster",
  "compressed_size_in_bytes" : 351,
  "version" : 4,
  "state_uuid" : "3LSnpinFQbCDHnsFv-Z8nw",
  "master_node" : "IwEK2o1-Ss6mtx50MripkA",
  "blocks" : { },
  "nodes" : {
    "IwEK2o1-Ss6mtx50MripkA" : {
      "name" : "es-node-2",
      "ephemeral_id" : "x9kUrr0yRh--3G0ckESsEA",
      "transport_address" : "172.31.50.123:9300",
      "attributes" : { }
    },
    "txM57a42Q0Ggayo4g7-pSg" : {
      "name" : "es-node-1",
      "ephemeral_id" : "Q370o4FLQ4yKPX4_rOIlYQ",
      "transport_address" : "172.31.62.172:9300",
      "attributes" : { }
    },
    "6YNZvQW6QYO-DX31uIvaBg" : {
      "name" : "es-node-3",
      "ephemeral_id" : "mH034-P0Sku6Vr1DXBOQ5A",
      "transport_address" : "172.31.52.220:9300",
      "attributes" : { }
    }
  },
 …

Cấu hình cụm Elasticsearch cho production

Chúng tôi đã xác định các vai trò khác nhau cho các nút trong cụm của chúng tôi, nhưng có một số cài đặt được đề xuất bổ sung cho một cụm Elasticsearch chạy trong môi trường sản xuất (production).

Tránh "Phân chia não"

Tình huống "phân chia não" là khi giao tiếp giữa các nút trong cụm không thành công do lỗi mạng hoặc lỗi nội bộ với một trong các nút. Trong loại kịch bản này, nhiều nút có thể tin rằng nó là master node, dẫn đến trạng thái không nhất quán dữ liệu.

Để tránh tình trạng này, chúng ta có thể thay đổi cấu hình discovery.zen.minimum_master_nodes trong tập tin cấu hình Elasticsearch để quyết định cần phải có bao nhiêu nút (đại biểu) để bầu ra một master node.

Cách tốt nhất để xác định số này là sử dụng công thức sau để quyết định số này: N / 2 + 1. N là số nút chính đủ điều kiện trong cụm. Sau đó, bạn làm tròn kết quả đến số nguyên gần nhất.

Trong trường hợp một cụm có ba nút, thì:

discovery.zen.minimum_master_nodes: 2

Điều chỉnh kích thước heap JVM

Để đảm bảo Elasticsearch có đủ thời gian hoạt động, nên điều chỉnh kích thước heap JVM mặc định (tối thiểu / tối đa 1 GB).

Theo quy tắc chung, kích thước heap tối đa nên được thiết lập bằng 50% RAM của bạn, nhưng không quá 32GB (do con trỏ Java không hiệu quả trong heap lớn hơn). Elastic cũng khuyến nghị rằng giá trị cho kích thước đống tối đa và tối thiểu phải giống hệt nhau.

Giá trị này có thể được cấu hình bằng cách sử dụng cài đặt Xmx và Xms trong tệp jvm.options.

Trên DEB:

sudo vim /etc/elasticsearch/jvm.options

-Xms2g
-Xmx2g

Tắt tính năng swapping

Hoán đổi (swapping) bộ nhớ không sử dụng là một hành vi đã biết nhưng trong bối cảnh của Elasticsearch có thể dẫn đến ngắt kết nối, hiệu suất kém và nói chung - một cụm không ổn định.

Để tránh hoán đổi, bạn có thể tắt tất cả hoán đổi (được khuyến nghị nếu Elasticsearch là dịch vụ duy nhất chạy trên máy chủ) hoặc bạn có thể sử dụng mlockall để khóa tiến trình Elasticsearch với RAM.

Để thực hiện việc này, hãy mở tệp cấu hình Elasticsearch trên tất cả các nút trong cụm:

sudo vim /etc/elasticsearch/elasticsearch.yml

Bỏ ghi chú dòng sau:

bootstrap.mlockall: true

Tiếp theo, mở tệp /etc/default/elasticsearch:

sudo vim /etc/default/elasticsearch

Thực hiện các cấu hình sau:

MAX_LOCKED_MEMORY=unlimited

Khởi động lại Elasticsearch khi bạn hoàn tất.

Điều chỉnh bộ nhớ ảo

Để tránh hết bộ nhớ ảo, hãy tăng số lượng giới hạn về số lượng mmap:

sudo vim /etc/sysctl.conf

Cập nhật cài đặt liên quan cho phù hợp:

vm.max_map_count=262144

Trên DEB / RPM, cài đặt này được định cấu hình tự động.

Tăng giới hạn trình mô tả file đang mở

Một cấu hình quan trọng khác là giới hạn của bộ mô tả file đang mở. Vì Elasticsearch sử dụng một lượng lớn bộ mô tả file, bạn phải đảm bảo giới hạn đã xác định là đủ nếu không, bạn có thể bị mất dữ liệu.

Khuyến nghị phổ biến cho cài đặt này là 65,536 và cao hơn. Trên DEB/RPM, các cài đặt mặc định đã được định cấu hình để phù hợp với yêu cầu này nhưng tất nhiên bạn có thể tinh chỉnh nó.

sudo vim  /etc/security/limits.conf

Đặt giới hạn:

- nofile 65536

Elasticsearch Cluster API

Elasticsearch hỗ trợ một số lượng lớn các Cluster API cho phép bạn quản lý và giám sát cụm Elasticsearch của mình. Hầu hết các API đều cho phép bạn xác định nút Elasticsearch nào sẽ gọi bằng cách sử dụng ID nút nội bộ, tên hoặc địa chỉ của nút.

Dưới đây là danh sách một số thao tác API cơ bản mà bạn có thể sử dụng. Để biết cách sử dụng nâng cao của các API cụm, hãy đọc bài đăng trên blog này .

Tình trạng cụm

API này có thể được sử dụng để xem thông tin chung về cụm và đánh giá tình trạng của nó:

curl -XGET 'localhost:9200/_cluster/health?pretty'

Response:

{
  "cluster_name" : "my-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

Trạng thái cụm

API này có thể sử dụng để xem báo cáo trạng thái chi tiết về toàn bộ cụm của bạn. Bạn có thể lọc kết quả bằng cách chỉ định các tham số trong URL.

curl -XGET 'localhost:9200/_cluster/state?pretty'

Response:

{
  "cluster_name" : "my-cluster",
  "compressed_size_in_bytes" : 347,
  "version" : 4,
  "state_uuid" : "uMi5OBtAS8SSRJ9hw1-gUg",
  "master_node" : "sqT_y5ENQ9SdjHiE0oco_g",
  "blocks" : { },
  "nodes" : {
    "sqT_y5ENQ9SdjHiE0oco_g" : {
      "name" : "node-1",
      "ephemeral_id" : "-HDzovR0S0e-Nn8XJ-GWPA",
      "transport_address" : "172.31.56.131:9300",
      "attributes" : { }
    },
    "mO0d0hYiS1uB--NoWuWyHg" : {
      "name" : "node-3",
      "ephemeral_id" : "LXjx86Q5TrmefDoq06MY1A",
      "transport_address" : "172.31.58.61:9300",
      "attributes" : { }
    },
    "it1V-5bGT9yQh19d8aAO0g" : {
      "name" : "node-2",
      "ephemeral_id" : "lCJja_QtTYauP3xEWg5NBQ",
      "transport_address" : "172.31.62.65:9300",
      "attributes" : { }
    }
  },
  "metadata" : {
    "cluster_uuid" : "8AqSmmKdQgmRVPsVxyxKrw",
    "templates" : { },
    "indices" : { },
    "index-graveyard" : {
      "tombstones" : [ ]
    }
  },
  "routing_table" : {
    "indices" : { }
  },
  "routing_nodes" : {
    "unassigned" : [ ],
    "nodes" : {
      "it1V-5bGT9yQh19d8aAO0g" : [ ],
      "sqT_y5ENQ9SdjHiE0oco_g" : [ ],
      "mO0d0hYiS1uB--NoWuWyHg" : [ ]
    }
  },
  "snapshots" : {
    "snapshots" : [ ]
  },
  "restore" : {
    "snapshots" : [ ]
  },
  "snapshot_deletions" : {
    "snapshot_deletions" : [ ]
  }
}

Thống kê cụm

Cực kỳ hữu ích để theo dõi số liệu hiệu suất trên toàn bộ cụm của bạn:

curl -XGET 'localhost:9200/_cluster/stats?human&pretty'

Response:

{
  "_nodes" : {
    "total" : 3,
    "successful" : 3,
    "failed" : 0
  },
  "cluster_name" : "my-cluster",
  "timestamp" : 1517224098451,
  "status" : "green",
  "indices" : {
    "count" : 0,
    "shards" : { },
    "docs" : {
      "count" : 0,
      "deleted" : 0
    },
    "store" : {
      "size" : "0b",
      "size_in_bytes" : 0
    },
    "fielddata" : {
      "memory_size" : "0b",
      "memory_size_in_bytes" : 0,
      "evictions" : 0
    },
    "query_cache" : {
      "memory_size" : "0b",
      "memory_size_in_bytes" : 0,
      "total_count" : 0,
      "hit_count" : 0,
      "miss_count" : 0,
      "cache_size" : 0,
      "cache_count" : 0,
      "evictions" : 0
    },
    "completion" : {
      "size" : "0b",
      "size_in_bytes" : 0
    },
    "segments" : {
      "count" : 0,
      "memory" : "0b",
      "memory_in_bytes" : 0,
      "terms_memory" : "0b",
      "terms_memory_in_bytes" : 0,
      "stored_fields_memory" : "0b",
      "stored_fields_memory_in_bytes" : 0,
      "term_vectors_memory" : "0b",
      "term_vectors_memory_in_bytes" : 0,
      "norms_memory" : "0b",
      "norms_memory_in_bytes" : 0,
      "points_memory" : "0b",
      "points_memory_in_bytes" : 0,
      "doc_values_memory" : "0b",
      "doc_values_memory_in_bytes" : 0,
      "index_writer_memory" : "0b",
      "index_writer_memory_in_bytes" : 0,
      "version_map_memory" : "0b",
      "version_map_memory_in_bytes" : 0,
      "fixed_bit_set" : "0b",
      "fixed_bit_set_memory_in_bytes" : 0,
      "max_unsafe_auto_id_timestamp" : -9223372036854775808,
      "file_sizes" : { }
    }
  },
  "nodes" : {
    "count" : {
      "total" : 3,
      "data" : 3,
      "coordinating_only" : 0,
      "master" : 3,
      "ingest" : 3
    },
    "versions" : [
      "6.1.2"
    ],
    "os" : {
      "available_processors" : 3,
      "allocated_processors" : 3,
      "names" : [
        {
          "name" : "Linux",
          "count" : 3
        }
      ],
      "mem" : {
        "total" : "10.4gb",
        "total_in_bytes" : 11247157248,
        "free" : "4.5gb",
        "free_in_bytes" : 4915200000,
        "used" : "5.8gb",
        "used_in_bytes" : 6331957248,
        "free_percent" : 44,
        "used_percent" : 56
      }
    },
    "process" : {
      "cpu" : {
        "percent" : 10
      },
      "open_file_descriptors" : {
        "min" : 177,
        "max" : 178,
        "avg" : 177
      }
    },
    "jvm" : {
      "max_uptime" : "6m",
      "max_uptime_in_millis" : 361766,
      "versions" : [
        {
          "version" : "1.8.0_151",
          "vm_name" : "OpenJDK 64-Bit Server VM",
          "vm_version" : "25.151-b12",
          "vm_vendor" : "Oracle Corporation",
          "count" : 3
        }
      ],
      "mem" : {
        "heap_used" : "252.1mb",
        "heap_used_in_bytes" : 264450008,
        "heap_max" : "2.9gb",
        "heap_max_in_bytes" : 3195076608
      },
      "threads" : 63
    },
    "fs" : {
      "total" : "23.2gb",
      "total_in_bytes" : 24962703360,
      "free" : "19.4gb",
      "free_in_bytes" : 20908818432,
      "available" : "18.2gb",
      "available_in_bytes" : 19570003968
    },
    "plugins" : [ ],
    "network_types" : {
      "transport_types" : {
        "netty4" : 3
      },
      "http_types" : {
        "netty4" : 3
      }
    }
  }
}

Bạn cũng có thể nhắm mục tiêu các nhóm nút cụ thể bằng bộ lọc nút.

Số liệu thống kê về nút

Nếu bạn muốn kiểm tra số liệu cho các nút cụ thể trong cụm, hãy sử dụng API này. Bạn có thể xem thông tin cho tất cả các nút, một nút cụ thể hoặc yêu cầu chỉ xem chỉ mục hoặc số liệu thống kê cụ thể về hệ điều hành / quy trình.

Tất cả các nút:

curl -XGET 'localhost:9200/_nodes/stats?pretty'

Một nút cụ thể:

curl -XGET 'localhost:9200/_nodes/node-1/stats?pretty'

Thống kê chỉ lập chỉ mục:

curl -XGET 'localhost:9200/_nodes/stats/indices?pretty'

Bạn có thể nhận bất kỳ số liệu cụ thể nào cho bất kỳ nút đơn nào với cấu trúc sau:

curl -XGET 'localhost:9200/_nodes/stats/ingest?pretty'

Hoặc nhiều nút với cấu trúc sau:

curl -XGET 'localhost:9200/_nodes/stats/ingest,fs?pretty'

Hoặc tất cả các chỉ số có một trong hai định dạng sau:

curl -XGET 'localhost:9200/_nodes/stats/_all?pretty'

curl -XGET 'localhost:9200/_nodes/stats?metric=_all?pretty'

Thông tin về nút

Nếu bạn muốn thu thập thông tin về bất kỳ nút nào hoặc tất cả các nút cụm của mình, hãy sử dụng API này.

Truy xuất cho một nút duy nhất:

curl -XGET ‘localhost:9200/_nodes/?pretty’

Hoặc nhiều nút:

curl -XGET ‘localhost:9200/_nodes/node1,node2?pretty’

Truy xuất dữ liệu trên các plugin hoặc ingest:

curl -XGET ‘localhost:9200/_nodes/plugins

curl -XGET ‘localhost:9200/_nodes/ingest

Thông tin về ingest processor sẽ xuất hiện như thế này (với nhiều hơn ba loại được hiển thị trong ví dụ dưới đây):

{
  "_nodes": …
  "cluster_name": "elasticsearch",
  "nodes": {
   "toTaLLyran60m5amp13": {
	"ingest": {
	   "processors": [
	     {
	       "type": "uppercase"
	     },
	     {
	       "type": "lowercase"
	     },
	     {
	       "type": "append"
	     }
	   ]
	 }
    }
  }
}

Pending Cluster Tasks

API này theo dõi các thay đổi ở cấp độ cụm, bao gồm nhưng không giới hạn ở việc ánh xạ được cập nhật, phân bổ không thành công và tạo chỉ mục.

Lệnh sau sẽ trả về một danh sách các pending task:

curl -XGET ‘localhost:9200/_cluster/pending_tasks?pretty’

Task Management

Tương tự như các API Pending Cluster Tasks, API Task Management sẽ lấy dữ liệu về các tác vụ hiện đang chạy trên các nút tương ứng.

Để nhận thông tin về tất cả các tác vụ hiện đang thực thi, hãy thực thi lệnh sau:

curl -XGET "localhost:9200/_tasks

Để nhận các nhiệm vụ hiện tại của các nút cụ thể và thêm các nhiệm vụ liên quan đến cụm, hãy thực thi lệnh sau:

curl -XGET ‘localhost:9200/_tasks?nodes=node1,node2&actions=cluster:*&pretty’

Truy xuất thông tin về một nhiệm vụ cụ thể (hoặc các nhiệm vụ con của nó) bằng cách nhập _tasks / và sau đó nhập ID cá nhân của nhiệm vụ:

curl -XGET ‘localhost:9200/_tasks/43r315an3xamp13’

Và đối với các nhiệm vụ con:

curl -XGET ‘localhost:9200/_tasks?parent_task_id=43r315an3xamp13’

API này cũng hỗ trợ lập chỉ mục lại, tìm kiếm, nhóm tác vụ và hủy tác vụ.

Thông tin cụm từ xa

Nhận thông tin cụm từ xa với lệnh sau:

curl -XGET 'localhost:9200/_remote/info?pretty'

Loại trừ cấu hình bỏ phiếu

Điều này sẽ xóa các nút đủ điều kiện làm master node.
Xóa tất cả các loại trừ bằng cách:

curl -X DELETE ‘localhost:9200/_cluster/voting_config_exclusions?pretty’

Hoặc thêm một nút vào danh sách loại trừ:

curl -X POST ‘localhost:9200/_cluster/voting_config_exclusions/node1?pretty’

Tiếp theo là gì?

Hướng dẫn này đã thực hiện một nỗ lực dũng cảm để cung cấp cho người dùng những điều cơ bản về thiết lập và cấu hình cụm Elasticsearch đầu tiên của bạn. Chúng tôi biết rõ rằng hầu như không thể cung cấp các hướng dẫn phù hợp với mọi môi trường và trường hợp sử dụng.

Cùng với hướng dẫn này, tôi thực sự khuyên bạn nên thực hiện các nghiên cứu bổ sung. Ngoài tài liệu chính thức của Elastic, đây là một số nguồn thông tin bổ sung:

ELK StackDevOpsElasticsearch
Bài Viết Liên Quan:
Khắc phục sự cố 5 lỗi ELK thường gặp
Trung Nguyen 10/07/2021
Khắc phục sự cố 5 lỗi ELK thường gặp

Trong bài viết này chúng tôi đã tổng hợp 5 lỗi ELK phổ biến nhất và hướng dẫn bạn cách khắc phục chúng một cách nhanh chóng.

5 sai lầm hàng đầu với Elasticsearch và cách tránh
Trung Nguyen 09/07/2021
5 sai lầm hàng đầu với Elasticsearch và cách tránh

Trong hướng dẫn này, chúng ta hãy xem xét kỹ hơn 5 trong số những sai lầm phổ biến và cách bạn có thể tránh mắc phải chúng.

10 khái niệm Elasticsearch bạn cần biết
Trung Nguyen 04/07/2021
10 khái niệm Elasticsearch bạn cần biết

Bài viết này cung cấp cho bạn 10 khái niệm quan trọng nhất trong Elasticsearch. Nắm được những khái niệm này giúp bạn bớt vất vả hơn khi học Elasticsearch.

Truy vấn Elasticsearch - Hướng dẫn chi tiết
Trung Nguyen 04/07/2021
Truy vấn Elasticsearch - Hướng dẫn chi tiết

Trong hướng dẫn này, chúng tôi sẽ giúp bạn các cách viết truy vấn Elasticsearch đầy đủ, chi tiết nhất. Giúp bạn tự tin khi làm việc với Elasticsearch.