Mục lục nội dung

Elasticsearch là gì? Chi tiết về Elasticsearch là gì? (ES) Các công ty lớn đang sử dụng Elasticsearch hoạt động như thế nào? Tại sao nên sử dụng Elasticsearch? Các khái niệm cần biết 1. Document trong Elasticsearch là gì? 2. Index 3. Shard 3.1 : Primary Shard 3.2 : Replica Shard 4. Node 5. Cluster Ưu nhược điểm của ES Ưu điểm Nhược điểm Cài đặt ElasticSearch Yêu cầu Cài đặt Chạy elasticsearch. Sử dụng câu lệnh để truy xuất dữ liệu trên ElasticSearch Tài liệu tham khảo Elasticsearch là gì?

Elasticsearch là gì?

Elasticsearch là gì? – là một công cụ tìm kiếm dựa trên nền tảng Apache Lucene. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON.

Elasticsearch được phát triển bằng Java và được phát hành dạng nguồn mở theo giấy phép Apache.

Chi tiết về Elasticsearch là gì? (ES)

Elasticsearch là một search engine. Elasticsearch được kế thừa từ Lucene Apache Elasticsearch thực chất hoặt động như 1 web server, có khả năng tìm kiếm nhanh chóng (near realtime) thông qua giao thức RESTful Elasticsearch có khả năng phân tích và thống kê dữ liệu Elasticsearch chạy trên server riêng và đồng thời giao tiếp thông qua RESTful do vậy nên nó không phụ thuộc vào client viết bằng gì hay hệ thống hiện tại của bạn viết bằng gì. Nên việc tích hợp nó vào hệ thống bạn là dễ dàng, bạn chỉ cần gửi request http lên là nó trả về kết quả. Elasticsearch là 1 hệ thống phân tán và có khả năng mở rộng tuyệt vời (horizontal scalability). Lắp thêm node cho nó là nó tự động auto mở rộng cho bạn. Elasticsearch là 1 open source được phát triển bằng Java

Các công ty lớn đang sử dụng

Wikimedia athenahealth Adobe Systems Facebook StumbleUpon Mozilla, Amadeus IT Group Quora Foursquare Etsy SoundCloud GitHub FDA CERN Stack Exchange Center for Open Science Reverb Netflix Pixabay Motili Sophos Slurm Workload Manager

Elasticsearch hoạt động như thế nào?

*
*
*

3. Shard

Shard là đối tượng của Lucene , 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 node bao gồm nhiều Shard . Chính vì thế Shard mà là đối tượng nhỏ nhất, hoạt động ở mức thấp nhất, đóng vai trò lưu trữ dữ liệu. Chúng ta gần như không bao giờ làm việc trực tiếp với các Shard vì Elasticsearch đã support toàn bộ việc giao tiếp cũng như tự động thay đổi các Shard khi cần thiết. Có 2 loại Shard là : primary shard và replica shard. 3.1 : Primary Shard Primary Shard là sẽ lưu trữ dữ liệu và đánh index . Sau khi đánh xong dữ liệu sẽ được vận chuyển tới các Replica Shard. Mặc định của Elasticsearch là mỗi index sẽ có 5 Primary shard và với mỗiPrimary shard thì sẽ đi kèm với 1 Replica Shard.

Bạn đang xem: Elasticsearch là gì

Xem thêm: Game Mô Phỏng Lái Xe Tải đường Dài, Xe Tải Simulator: Châu âu

Xem thêm: Serotonin Là Gì – Hội Chứng Serotonin

3.2 : Replica Shard Replica Shard đúng như cái tên của nó, nó là nơi lưu trữ dữ liệu nhân bản của Primary Shard Replica Shard có vai trò đảm bảo tính toàn vẹn của dữ liệu khi Primary Shardxảy ra vấn đề. Ngoài ra Replica Shard có thể giúp tăng cường tốc độ tìm kiếm vì chúng ta có thể setup lượng Replica Shard nhiều hơn mặc định của ES

4. Node

Là trung tâm hoạt động của Elasticsearch. Là nơi lưu trữ dữ liễu ,tham gia thực hiện đánh index cúa cluster cũng như thực hiện các thao tác tìm kiếm Mỗi node được định danh bằng 1 unique name

5. Cluster

Tập hợp các nodes hoạt động cùng với nhau, chia sẽ cùng thuộc tính cluster.name. Chính vì thế Cluster sẽ được xác định bằng 1 ‘unique name’. Việc định danh các cluster trùng tên sẽ gây nên lỗi cho các node vì vậy khi setup các bạn cần hết sức chú ý điểm này Mỗi cluster có một node chính (master), được lựa chọn một cách tự động và có thể thay thế nếu sự cố xảy ra. Một cluster có thể gồm 1 hoặc nhiều nodes. Các nodes có thể hoạt động trên cùng 1 server . Tuy nhiên trong thực tế , một cluster sẽ gồm nhiều nodes hoạt động trên các server khác nhau để đảm bảo nếu 1 server gặp sự cố thì server khác (node khác) có thể hoạt động đầy đủ chức năng so với khi có 2 servers. Các node có thể tìm thấy nhau để hoạt động trên cùng 1 cluster qua giao thức unicast.

Chức năng chính của Cluster đó chính là quyết định xem shards nào được phân bổ cho node nào và khi nào thì di chuyển các Cluster để cân bằng lại Cluster

Ưu nhược điểm của ES

Ưu điểm

Tìm kiếm dữ liệu rất nhanh chóng, mạnh mẽ dựa trên Apache Lucene ( near-realtime searching) Có khả năng phân tích dữ liệu (Analysis data) Khả năng mở rộng theo chiều ngang tuyệt “vòi” Hỗ trợ tìm kiếm mờ (fuzzy), tức là từ khóa tìm kiếm có thể bị sai lỗi chính tả hay không đúng cú pháp thì vẫn có khả năng elasticsearch trả về kết quả tốt. Hỗ trợ Structured Query DSL (Domain-Specific Language ), cung cấp việc đặc tả những câu truy vấn phức tạp một cách cụ thể và rõ ràng bằng JSON. Hỗ trợ nhiều Elasticsearc client như Java, PhP, Javascript, Ruby, .NET, Python

Nhược điểm

Elasticsearch được thiết kế cho mục đích search, do vậy với những nhiệm vụ khác ngoài search như CRUD thì elastic kém thế hơn so với những database khác như Mongodb, Mysql …. Do vậy người ta ít khi dùng elasticsearch làm database chính, mà thường kết hợp nó với 1 database khác. Trong elasticsearch không có khái niệm database transaction , tức là nó sẽ không đảm bảo được toàn vẹn dữ liệu trong các hoạt độngInsert, Update, Delete.Tức khi chúng ta thực hiện thay đổi nhiều bản ghi nếu xảy ra lỗi thì sẽ làm cho logic của mình bị sai hay dẫn tới mất mát dữ liệu. Đây cũng là 1 phần khiến elasticsearch không nên là database chính. Không thích hợp với những hệ thống thường xuyên cập nhật dữ liệu. Sẽ rất tốn kém cho việc đánh index dữ liệu.

Cài đặt ElasticSearch

Yêu cầu

Elasticsearch yêu cầu Java 8 trở lên và phải thiết lập biến môi trường JAVA_HOME cho java, do đó trước khi cài Elasticsearch, hãy chắc chắn rằng bạn đã cài Java version >= 8 trên máy.

Kiểm tra bằng lệnh java -version để biết máy máy mình đã cài Java chưa và phiên bản Java đang cài là bao nhiêu. Kiểm tra biến môi trường JAVA_HOME đã được thiết lập chưa bằng lệnh: echo $JAVA_HOME

Cài đặt

Download và cài đặt Elasticsearch PGP Key bằng lệnh sau:

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

Để cài đặt Elasticsearch trên Ubuntu ta có 2 cách là cài từ Repository hoặc cài từ file .deb

Cách 1: Cách Elasticsearch bằng APT Repository

Cài gói apt-transport-https

sudo apt-get install apt-transport-https

Lưu định nghĩa repository vào /etc/apt/sources.list.d/elastic-6.x.list:

(Repository mặc định ko có elasticsearch)

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

Cài đặt Elasticsearch bằng lệnh:

sudo apt-get update && sudo apt-get install elasticsearch

Done!

Cách 2: cài đặt elasticsearch bằng gói .deb

Chạy các lệnh dưới đây để tải và cài đặt elasticsearch bằng file .deb

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.deb.sha512 shasum -a 512 -c elasticsearch-6.4.0.deb.sha512 sudo dpkg -i elasticsearch-6.4.0.deb

Done!

Chạy elasticsearch.

Elasticsearch sau khi được cài đặt sẽ không tự động chạy.

Để khởi động, start, stop elasticsearch ta làm như sau:

Lệnh để chạy server elasticsearch$ sudo systemctl start elasticsearch.service:

$ sudo systemctl start elasticsearch.service

Lệnh khởi tạo 1 index, mapping trong index đó và 1 document:

$ curl -X PUT http://localhost:9200/team/_mapping/member

Khởi tạo thành công , màn hình sẽ trả về dòng

Là khởi tạo thành công index “team”

Sử dụng câu lệnh để truy xuất dữ liệu trên ElasticSearch

Lệnh liệt kê các index có trong ES: $ curl -X GET “localhost:9200/_cat/indices?v” Lệnh tạo document của index: ở đây là thêm member với các trường thuộc tính $ curl -X PUT http://localhost:9200/team/_mapping/member?,&”name”= ,&”email”= ,&”age”= ,&”phone”= ,&”image”= ,&”technologies”= &}&} Lệnh kiểm tra tất cả index đã khởi tạo: $ curl -X GET http://localhost:9200/team?pretty Lệnh thêm, sửa dữ liệu vào index trên(team), ở đây là dữ liệu do nhóm em fake ra và insert vào $ curl -X PUT http://localhost:9200/team/member/_bulk?&&&&&&& Lệnh hiển thị thông tin các dữ liệu trong document và của từng doccument sau khi đã thêm $ curl -X GET http://localhost:9200/team/member/4?pretty Lệnh tìm kiếm tất cả dữ liệu các document trong index sử dụng API Search $ curl -X GET http://localhost:9200/_search?pretty=true Lệnh tìm kiếm theo text nhập ở tất cả các trường trong document , ở đây key search của mình là ruby, đây cũng chính là điểm mạnh của Elasticsearch, nó không giống với query like như thao tác với DB vì nó cần phải nhập đầy đủ text đó ví dụ như ruby ở trên sẽ trả về các document member có text là ruby trong tất cả các field $ curl -X GET http://localhost:9200/_search?q=ruby Lệnh xóa 1 index $ curl -X DELETE “localhost:9200/cuongquach-company”

Tài liệu tham khảo Elasticsearch là gì?

Vẫn còn một số các hoạt động, các API để xử lý vào thao tác với Index trong Elasticsearch, nhưng với phần tìm hiểu ở trên về một công cụ mạnh mẽ như elasticsearch là đủ để có thể thao tác, sử dụng và làm quen với elasticsearch. Các bạn có thể tham khảo ở các trang dưới đây.

https://www.tutorialspoint.com/elasticsearch/elasticsearch_search_apis.htm http://www.elasticsearchtutorial.com/elasticsearch-in-5-minutes.html https://www.elastic.co/guide/index.html

Chuyên mục: Hỏi Đáp