Skip to content

Instantly share code, notes, and snippets.

@nmvuong92
Last active September 6, 2018 08:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nmvuong92/e613715da55bb6a71979f7bf934736b0 to your computer and use it in GitHub Desktop.
Save nmvuong92/e613715da55bb6a71979f7bf934736b0 to your computer and use it in GitHub Desktop.

ELASTICSEARCH

Các khái niệm, đơn vị

NRT near real time

Là ứng dụng gần thời gian thực, dưới 1 giây

cluster (cụm)

  • Một tập hợp Nodes (servers) chứa tất cả các dữ liệu.

  • Cái tên nói lên tất cả, 1 cụm cluster trong Elasticsearch là một nhóm của nhiều nút elasticsearch (nodes) được kết nối với nhau

  • Sức mạnh của ES cluster nằm trong phân chia nhiệm vụ (distribution of tasks), tìm kiếm & lập chỉ mục (searching and indexing) trên tất cả các nút (nodes) trong cụm (cluster)

  • Các nút (node) trong cụm (cluster) ES được gán 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 (search) và tổng hợp (aggregation)
    • Master nodes — phụ trách các hành động quản lý và cấu hình trên toàn cụm (cluster-wide) chẳng hạn như thêm và xóa các nút
    • Client nodes — chuyển tiếp các yêu cầu cụm tới nút chính (master node) và các yêu cầu liên quan đến dữ liệu đến các nút dữ liệu
    • Ingest nodes — tiền xử lý tài liệu (pre-processing documents) trước khi lập chỉ mục (indexing)
  • Khi Mới cài đặt một nút (node) Elasticsearch duy nhất sẽ tạo thành một cụm nút đơn (single-node) mới có tên là "elasticsearch",

  • 1 cụm gồm nhiều nodes (servers) cùng nhau nắm giữ toàn bộ dữ liệu và có khả năng search qua tất cả các node.

  • 1 cluster được định danh bởi 1 tên duy nhất không trùng nhau khi có nhiều cluster

node

  • Một server duy nhất chứa một số dữ liệu và tham gia vào cluster’s indexing and querying.
  • 1 node = 1 server riêng mà là 1 phần trong cluster, dùng để lưu dữ liệu, tham gia lập chỉ mục index và search
  • 1 node cũng được định danh bởi 1 tên riêng biệt có thể thay đổi được
  • mặc định 1 node được thiết đặt để join với 1 cluster duy nhất định bởi cluster name mặc định cluster "elasticsearch"
  • 1 cluster có n node

index

  • Mỗi ES Index là 1 tập hợp các documents.
  • 1 index là tập hợp các documents có những đặc điểm chung
  • 1 cluster có thể chứa nhiều index

type

  • Một định nghĩa về schema of a Document bên trong một Index (Index có thể có nhiều type).
  • trong 1 index có thể định nghĩa 1 hoặc nhiều types
  • 1 type là 1 mục/ phân vùng có nghĩa trong index
  • 1 type được định nghĩa cho document bao gồm một số fields

document

  • Một JSON object với một số dữ liệu. Đây là basic information unit trong ES.
  • 1 document là 1 đơn vị thông tin cơ bản được

Shard & Replicas:

  • Shard là Tập con các documents của 1 Index. Một Index có thể được chia thành nhiều shard.
  • Mỗi index có thể được chia thành nhiều Shards
  • Mỗi index cũng có thể được sao lưu nhiều lần
  • Mỗi khi được nhân bản, mỗi index sẽ có những shards chính và những shards nhân bản (copy từ shards chính)
  • Số lượng shards và replicas có thể được khai báo khi tạo index.
  • Sau khi index được tạo, bạn có thể thay đổi số lượng bản sao bất cứ lúc nào nhưng không thể thay đổi số shards.
  • mặc định mỗi index trong Elasticsearch được cấp 5 primary shards và 1 replic "which means that if you have at least two nodes in your cluster, your index will have 5 primary shards and another 5 replica shards (1 complete replica) for a total of 10 shards per index."

!!! note

  • Each Elasticsearch shard is a Lucene index.
  • There is a maximum number of documents you can have in a single Lucene index.
  • As of LUCENE-5843, the limit is 2,147,483,519 (= Integer.MAX_VALUE – 128) documents. You can monitor shard sizes using the_cat/shards api.

Thực hành đối với windows

  1. vào trang chủ elasticsearch download file zip giải nén elasticsearch-6.4.0.zip
  2. vào thư mục bin chạy file elasticsearch.bat đợi chạy xong elasticsearch
  3. vào localhost:9200
{
name: "5PALYnL",
cluster_name: "elasticsearch",
cluster_uuid: "Y5fUDt2ISwa8PdcsTsQmGQ",
version: {
number: "6.4.0",
build_flavor: "default",
build_type: "zip",
build_hash: "595516e",
build_date: "2018-08-17T23:18:47.308994Z",
build_snapshot: false,
lucene_version: "7.4.0",
minimum_wire_compatibility_version: "5.6.0",
minimum_index_compatibility_version: "5.0.0"
},
tagline: "You Know, for Search"
}

tham khảo

https://thinhpc86.wordpress.com/2015/06/09/elasticsearch-php-mysql-thuc-hanh-phan-1/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment