Giới thiệu và cài đặt Elasticsearch và Kibana bằng Docker

[ad_1]

Elasticsearch là gì

Elasticsearch (trang chủ Elasticsearch) phát hành năm 2010, là phần mềm miễn phí, nguồn mở viết bằng ngôn ngữ Java, nó có chức năng như như là công cụ tìm kiếm và phân tích phân tán (máy chủ ở nhiều nơi). Elasticsearch được xây dựng dựa trên
Apache Lucene, Elasticsearch trở thành công cụ tìm kiếm (search engine) thông dụng nhất và được sử dụng rộng rãi cho các công việc liên quan đến chỉ mục và tìm kiếm tài liệu, phân tích dữ liệu …

es
Với những ưu điểm như : năng lực nghiên cứu và phân tích, tìm kiếm tài liệu nhanh gọn, tương hỗ tìm kiếm mờ, thuận tiện tạo ra những truy vấn phức tạp, cung ứng sẵn thư viện client cho nhiều ngôn từ ( Elasticsearch Clients ) như Java, Php … Elasticsearch được sử dụng bởi nhiều công ty lớn như Facebook, GitHub, Wikimedia …
Ứng dụng web của bạn với nhiều tài liệu, bạn hoàn toàn có thể tận dụng năng lực của Elasticsearch để phân phối công dụng tìm kiếm bài viết, mẫu sản phẩm … một cách chuyên nghiệp và nhanh gọn !

Bạn đang đọc: Giới thiệu và cài đặt Elasticsearch và Kibana bằng Docker

Một vài khái niệm và cơ chế hoạt động

Khi đã cài đặt được một hệ thống Elasticsearch (có thể chỉ là một server hay nhiều server phân tán), thì tương tác với nó thông qua cơ chế RESTful, nghĩa là từ client tạo ra các HTTP Request (GET, PUT …) kèm dữ liệu dạng JSON để tương tác với Elasticsearch (tạo, xóa cập nhật dữ liệu, truy vấn tìm kiếm …).

Để tạo ra HTTP Request gửi đến Elasticsearch bạn có thể sử dụng bất kỳ ngôn ngữ yêu thích nào, ở phần này để không phụ thuộc ngôn ngữ nào sẽ trình bày việc tạo các HTTP Request kèm dữ liệu JSON bằng cách sử dụng CURL, sau đó có thể có một vài bài viết sử dụng PHP, C#, Java để tương tác với Elasticsearch

Trước khi vào thực hành thực tế, hoàn toàn có thể lướt qua 1 số ít khái niệm sau :

cluster là các server (nodes) – Elasticsearch kết nối với nhau để lưu giữ dữ liệu và cung cấp chức năng đánh chỉ mục, tìm kiếm dữ liệu trên các server đó. Một cluster xác định bởi tên duy nhất (mặc định tên là elasticsearch). Bạn cũng lưu ý, dù bạn chỉ tạo ra hệ thống với 1 server (node) thì vẫn có một cluster, sau này có thể nối nhiều server phân tán vào cluster để mở rộng khả năng của hệ thống mà ở đó một node (server) có thể có một chức năng riêng như (master node, data, client…).

node đó là một server tham ra tạo thành cluster, nó có vai trò lưu dữ liệu, đánh chỉ mục và cung cấp khả năng tìm kiếm. Một node cũng cần xác định một cái tên, mặc định một tên duy nhất (UUID) được sinh ra cho nó khi nó chạy trừ khi bạn gán cho nó một cái tên cụ thể. Mặc định mỗi node cần thiết lập nối vào một cluster đã đặt tên (mặc định là elasticsearch), có nghĩa là khi node hoạt động nó sẽ khám phá mạng tìm đến cluster với tên chỉ định để nối vào. Nếu như bạn chạy một server (node) mà mạng của bạn chưa có một cluster nào với tên chỉ ra, thì node này sẽ tự động là một cluster với tên mặc định elasticsearch

index là một tập hợp các tài liệu (document), những tài liệu này có một số tên thuộc tính tính chất chung. Thường mỗi index là một loại dữ liệu nào đó của bạn ví dụ như index chữa các sản phẩm, index chứa các đơn hàng, index chứa các bài viết … Mỗi index được đặt một cái tên (nhớ là chữ thường), tên này dùng để thi hành các chức năng như đánh chỉ mục, tìm kiếm, cập nhật … cho các dữ liệu (document) trong nó. Mỗi node có thể tạo nhiều index

Document là đơn vị thông tin lưu trong index (giống như dòng lưu trong bảng), đơn vị thông tin này biểu diễn bằng JSON (JavaScript Object Notation), qua đó nó lưu loại dữ liệu của bạn như sản phẩm, bài viết, đơn hàng … Một index lưu bao nhiêu Document cũng được.

Xem thêm: Nghĩa Của Từ Outing Là Gì, Nghĩa Của Từ Outing, Nghĩa Của Từ Outing, Từ Outing Là Gì

Shard Để giải quyết các vấn đề hiệu năng khi lưu trữ dữ liệu lớn bị giới hạn bởi phần cứng ES cung cấp khả năng chia một index ra thành từng mảnh nhỏ hơn – mỗi mảnh nhỏ đó gọi là shard. Khi tạo ra index, bạn có thể chia nó ra thành bao nhiêu shard tùy bạn. Một shard đó vẫn có đầy đủ chức năng như index nhưng độc lập với index, vào có thể lưu ở các node khác nhau. Shard nó giúp giải quết vấn đề hiệu năng tốc độ, tìm kiếm song song trên nhiều node phân tán. Ngoài ra bạn cũng có khái niệm replica đó là một bản backup, copy của shard để ES có thể phục hồi nếu một shard nào đó bị chết.

Cài đặt Elasticsearch và công cụ Kibana

Elasticsearch có thể tải về, cài đặt trực tiếp trên hệ thống máy của bạn với hướng dẫn đơn giản tại Elasticsearch, ở bài này sẽ cài đặt và chạy Elasticsearch bằng Docker (bạn có thể xem cách dùng Docker nếu bạn chưa biết.)

Mặc định Elasticsearch lắng nghe các yêu cầu HTTP gửi đến ở cổng 9200, có nghĩa bạn sẽ tương tác với nó ở địa chỉ http://localhost:9200, vào gửi đi các HTTPD Request có thể thực hiện bằng lệnh CURL nên nếu hệ thống chưa có lệnh này bạn cần cài đặt vào trước để thực hành (Linux, macOS có thể đã có sẵn curl, Windows cần cài thêm). Ngoài ra bạn cũng có thể sử dụng các công cụ như Postman trực quan hơn, hoặc sử dụng thẳng thư viện theo ngôn ngữ lập trình của bạn (Elasticsearch Clients) …

Một công cụ quản trị, giám sát tương tác với Elasticsearch một cách trực quan qua thiên nhiên và môi trường web ( truy vấn bằng trình duyệt ) đó là Kibana, dưới đây cũng sẽ thiết lập công cụ này bằng Docker cùng với ES .

Sau đây là file docker-compose.yml với nội dung tạo ra container Docker chạy Elasticsearch và Kibana với mục tiêu như sau:

  • Elasticsearch (elasticsearch:7.0.1) lắng nghe ở cổng 9200, một node tên là elasticsearch và khởi tạo là master node, đặt tên cluster là datasearch
  • Nơi lưu dữ liệu của node là ổ đĩa ánh xạ thư mục /Users/xuanthulab/Desktop/xdata/docker/elasticsearch/data (bạn thay bằng thư mục máy host Docker của bạn).
  • Container chạy kibana (kibana:7.0.1) lắng nghe ở cổng 5601

docker-compose.yml

version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
    container_name: elasticsearch
    environment:
      - node.name=elasticsearch
      - cluster.name=datasearch
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - cluster.initial_master_nodes=elasticsearch
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - "9200:9200"
    volumes:
      - esdata:/usr/share/elasticsearch/data

  kibana:
    image: docker.elastic.co/kibana/kibana:7.0.1
    ports:
      - "5601:5601"

volumes:
  esdata:
    driver_opts:
      device: /Users/xuanthulab/Desktop/xdata/docker/elasticsearch/data
      o: bind

Với file docker-compose.yml này, chạy Docker (xem thêm Sử dụng Docker-compose)vào thư mục lưu file này và gõ lệnh để chạy các dịch vụ trên:

Xem thêm: OUR là gì? -định nghĩa OUR

docker-compose up

Sau lệnh này nó sẽ tải các image docker tương ứng về và khởi chạy 2 dịch vụ là Elasticsearch (http://localhost:9200) và Kibana (http://localhost:5601)

Và như vậy đã có ES để thực hành thực tế .
Hãy vào phần Sử dụng ElasticSearch cơ bản để thực thi những tương tác tiên phong !

[ad_2]

Related Posts

Trò Anh hùng chiến loạn 3

[ad_1] Anh hùng chiến loạn 3 là một phiên bản, gần như là hoàn hảo và được anh em game thủ đánh giá nhiệt tình cũng như…

Trò chơi anh hùng chiến loạn

[ad_1] Anh hùng chiến loạn một trong những dòng game, một trong chơi cuốn hút không chỉ anh em trong nước mà còn có anh em game…

Trò Anh hùng chiến loạn 2

[ad_1] Anh hùng chiến loạn 2 là một phiên bản mới, một trong những phiên bản mà rất rất nhiều người chơi theo đuổi dòng game này…

Trò chơi Ninja bí ẩn

[ad_1] Ninja bí ẩn là dòng game hành động, nói về một nữ Ninja có tên Akane với những màn đánh nhau vô cùng hấp dẫn và…

Game Săn trứng vàng: Tommy Vs Birds

[ad_1] Săn trứng vàng là một trò chơi, thuộc về dòng bắn súng tọa độ trong việc ngắm và bắn những cành cây, chim, … làm bất…

Trò chơi chọc phá cô y tá

[ad_1] Game Chọc phá y tá là trò chơi, thể hiện sự lém lĩnh và sự tinh nghịch của các bạn cho dù ở bất kỳ nơi…

Leave a Reply