1. Giới thiệu

Elasticsearch là điều khoản tìm kiếm cùng phân tích phân tán được xây cất trên Apache Lucene. Kể từ khi trình làng năm 2010, Elasticsearch đã nhanh chóng trở thành công xuất sắc cụ tìm kiếm thịnh hành nhất cùng được sử dụng thoáng rộng cho những trường hợp sử dụng tương quan đến so sánh nhật ký, tìm kiếm toàn văn bản, thông tin bảo mật, phân tích nghiệp vụ và thông tin vận hành.

Bạn đang xem: Phân tích dữ liệu với Elasticsearch (Data Analytics with Elasticsearch)

Tổng phù hợp 200+ tài liệu, sách, bài thực hành, clip hướng dẫn lập trình… tự cơ bạn dạng đến nâng cao

Elasticsearchđược cách tân và phát triển bằng Java với được xây cất dạng mối cung cấp mở theo giấy tờ Apache.

2. Tư tưởng về Elasticsearch

Elasticsearch là một tìm kiếm engine.ES được thừa kế từ Lucene Apache.ES thực ra hoặt động như một web server, có chức năng tìm kiếm lập cập (near realtime) trải qua giao thức RESTful.Elasticsearch có kĩ năng phân tích và thống kê dữ liệu.Elasticsearch chạy trên vps riêng và đồng thời giao tiếp thông qua RESTful thế nên nên nó không nhờ vào vào client viết bằng gì hay khối hệ thống hiện tại của công ty viết bởi gì. Nên việc tích hợp nó vào khối hệ thống bạn là dễ dàng, bạn chỉ việc 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 hoàn hảo nhất (horizontal scalability). Lắp thêm node mang lại nó là nó tự động auto mở rộng cho bạn.Elasticsearch là 1 mở cửa source được trở nên tân tiến bằng Java.

3. Người sử dụng

Wikimediaathenahealth
Adobe Systems
Facebook
Stumble
Upon Mozilla,Amadeus IT Group
Quora
Foursquare
Etsy
Sound
Cloud
Git
Hub
FDACERNStack Exchange
Center for xuất hiện Science
Reverb
Netflix
Pixabay
Motili
Sophos
Slurm Workload Manager

3. Ưu điểm, nhược điểm

3.1. Ưu điểm

Tìm kiếm tài liệu rất cấp tốc chóng, khỏe khoắn dựa trên Apache Lucene (near-realtime searching).Có kĩ 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 kiếm hoàn toàn có thể bị sai lỗi thiết yếu tả hay là không đúng cú pháp thì vẫn có tác dụng elasticsearch trả về công dụng tốt.

THAM GIA KHÓA HỌC LẬP TRÌNH

Hỗ trợ Structured Query DSL (Domain-Specific Language ), cung cấp việc đặc tả đầy đủ câu tầm nã vấn phức hợp một cách cụ thể và ví dụ bằng JSON.Support những Elasticsearch client như Java, Ph
P, Javascript, Ruby, .NET, Python.

3.2. Nhược điểm

Elasticsearch được xây đắp cho mục đích search, thế nên với những trọng trách khác ngoài search như CRUD thì elastic kém cầm cố hơn so với rất nhiều database khác ví như Mongodb, Mysql …. Vì thế người ta ít khi dùng elasticsearch làm cho database chính, nhưng thường phối kết hợp nó với cùng 1 database khác.Trong elasticsearch không có khái niệm database transaction , tức là nó đang không đảm bảo an toàn được toàn diện dữ liệu trong các hoạt động
Insert, Update, Delete.Tức khi chúng ta thực hiện biến đổi nhiều phiên bản ghi nếu xẩy ra lỗi thì sẽ làm cho logic của bản thân bị không nên hay dẫn đến mất đuối 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 phù 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.

4. Phong cách thiết kế của Elasticsearch

4.1. Document

Document là một trong những JSON object với một số trong những dữ liệu. Đây là basic information unit trong ES. Hiểu một cách cơ bản thì đấy là đơn vị nhỏ dại nhất để lưu trữ dữ liệu vào Elasticsearch.

TÀI LIỆU HỌC LẬP TRÌNH

4.2. Index

Index có lẽ là một khái niệm vượt quen thuộc đối với các bằng hữu dùng Mysql rồi. Lúc đọc mang đến đây chắc hẳn rằng ae đã thừa hiểu công dụng của index là gì rồi. Tuy nhiên nếu chúng ta nghĩ rằng index trong Elasticsearch hoàn toàn tương đương trong Mysql thì các bạn nhầm rồi nhé!

Trong Elasticsearch , áp dụng một cấu tạo được call là inverted index . Nó có thiết kế để cho phép tìm kiếm full-text search. Phương pháp của nó khá solo giản, những văn phiên bản được phân bóc tách ra thành từng từ có nghĩa sau đó sẽ đk maps xem ở trong văn bản nào. Khi tìm kiếm tùy thuộc vào loại search sẽ gửi ra kết quả cụ thể.

VÍ dụ : họ có 2 văn bản cụ thể như sau :

1,The quick brown fox jumped over the lazy dog2,Quick brown foxes leap over lazy dogs in summer
Để tạo thành một inverted index, trước hết họ sẽ phân loại nội dung của từng tài liệu thành các từ đơn nhất (chúng tôi hotline là terms), chế tạo ra một list được sắp xếp của tất cả terms duy nhất, sau đó liệt kê tài liệu nào cơ mà mỗi thuật ngữ xuất hiện. Kết quả như sau:

Term Doc_1 Doc_2-------------------------Quick | | XThe | X |brown | X | Xdog | X |dogs | | Xfox | X |foxes | | Xin | | Xjumped | X |lazy | X | Xleap | | Xover | X | Xquick | X |summer | | Xthe | X |------------------------Bây giờ, nếu họ muốn tra cứu kiếm color quick brown, họ chỉ yêu cầu tìm trong các tài liệu trong các số đó mỗi thuật ngữ có xuất mở ra hay không. Tác dụng như sau:

Term Doc_1 Doc_2-------------------------brown | X | Xquick | X |------------------------Total | 2 | 1Như chúng ta đã thấy , cả hai đoạn văn phiên bản đều thích hợp với từ khóa. Tuy nhiên hoàn toàn có thể dễ dàng nhận biết rằng Doc_1 đúng đắn hơn nhiều. Bạn hoàn toàn có thể cài đặt việc tìm kiếm kiếm 1 cách kỹ càng hơn, mặc dù minh vẫn đề cập đến sự việc này trong nội dung bài viết sau nhé. Nếu khách hàng có hứng thú có thể vào tài liệu

https://www.elastic.co/guide/en/elasticsearch/guide/current/inverted-index.htmlvà

https://www.elastic.co/guide/en/elasticsearch/guide/current/relevance-intro.html#relevance-intro

để có cái nhìn cụ thể hơn .

4.3. Shard

Shard là đối tượng người tiêu dù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 . Cũng chính vì thế Shard nhưng mà là đối tượng bé dại nhất, chuyển động ở mức phải chăng nhất, đóng vai trò tàng trữ dữ liệu.

Chúng ta gần như là không lúc nào làm vấn đề trực tiếp với những Shard vì Elasticsearch đang support cục bộ việc tiếp xúc cũng như tự động hóa thay đổi các Shard khi buộc phải thiết.

Có 2 một số loại Shard là: primary shard với replica shard.

Primary Shard:

Primary Shard là sẽ tàng trữ dữ liệu cùng đánh index. Sau khi đánh kết thúc dữ liệu sẽ được vận đưa tới những Replica Shard.Mặc định của Elasticsearch là mỗi index sẽ có được 5 Primary shard cùng với từng Primary shard thì sẽ kèm theo với 1 Replica Shard.

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 phiên bản của Primary Shard.Có vai trò đảm bảo an toàn tính toàn diện của tài liệu khi Primary Shard xẩy ra vấn đề.Ngoài ra Replica Shard có thể giúp bức tốc tốc độ search kiếm vì chúng ta cũng có thể setup lượng Replica Shard nhiều hơn nữa mặc định của Elasticsearch.

4.4. Node

Là trung tâm buổi giao lưu của Elasticsearch. Là nơi lưu trữ dữ liễu ,tham gia triển khai đá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 quality name.

4.5. Cluster

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

Chức năng chính của Cluster đó chính là quyết định xem shards làm sao được phân chia cho node làm sao và lúc nào thì dịch rời các Cluster để cân đối lại Cluster

5. Tổng kết

Bài viết trên cung cấp cho bạn đọc tầm nhìn tương đối chi tiết về phong cách thiết kế của Elasticsearch, cụ thể ngoài câu hỏi thừa Elasticsearch là một công cụ cung ứng việc search kiếm rất là mạnh mẽ và nhanh chóng, nhưng chưa phải dự án nào áp dụng Elasticsearch là hiệu quả, trái lại nó còn tạo ra ra nhiều lỗi không muốn muốn. Bởi vì vậy, hãy coi xét thật cẩn thận về yêu ước của dự án trước khi vận dụng Elasticsearch vào.

Elastic search là gì?

Elasticsearch là một trong full text tìm kiếm engine hoạt động như 1 website server trở nên tân tiến trên căn cơ Java, có chức năng tìm kiếm mau lẹ (near realtime) thông qua giao thức RESTful API.

Ngoài kĩ năng full text search, Elasticsearch có khả năng phân tích, tổng hợp tài liệu (data aggregation) cùng thống kê dữ liệu.

Elasticsearch là 1 khối hệ thống phân tán và có công dụng mở rộng tuyệt đối hoàn hảo (horizontal scalability). Lắp thêm node mang lại nó là nó tự động tự động mở rộng cho vận dụng của bạn.

Ưu điểm của Elastic search so với phương thức search truyền thống

Nếu tìm kiếm bằng truy nã vấn like “%one%” thì tác dụng sẽ chỉ việc chứa “one” là ra. Ví dụ: “phone”, “zone”, “money”, “alone” … nói thông thường sẽ là một trong những list kết quả không hy vọng muốn.

Còn search bằng ES thì gõ “one” đang chỉ tất cả “one” được trả về nhưng mà thôi. Truy tìm vấn lượt thích không thể tróc nã vấn từ có dấu. Ví dụ: tự khoá gồm dấu là “có”, giả dụ truy vấn lượt thích chỉ gõ “co” thì sẽ không trả về được chính xác kết quả Về Perfomance thì ES sẽ là giỏi hơn, truy vấn vấn lượt thích sẽ tìm kiếm kiếm đối kháng thuần toàn văn bản không áp dụng index, tức thị tập dữ liệu càng bự thì tìm kiếm càng lâu, trong những khi ES lại “đánh index” cho các trường được chọn để tìm kiếm kiếm.

Elasticsearch hoạt động như cố gắng nào?

*

ES không khỏe khoắn trong các làm việc CRUD, buộc phải thường đã dùng tuy nhiên song với một DB chính (SQL, My
SQL, Mongo
DB …).

Elastic tìm kiếm lưu dữ liệu theo phương thức document. Cơ phiên bản một document vào ES giống hệt như 1 mặt hàng trong CDSL dục tình còn các field thì tương xứng với các cột.

*

Ứng dụng

Phân tích tài liệu người dùng, áp dụng ML
*
Xây dựng Module tìm kiếm của Blog hay website

Tích vừa lòng ES vào 1 hệ thống hiện có

*

Giả sử như bạn có cửa ngõ hàng nhỏ lẻ online cùng với thông tin thành phầm được tàng trữ trong cơ sở tài liệu SQL. Bạn phải tìm tìm dữ liệu mau lẹ và gồm liên quan, bạn setup Elastic
Search.

Để đánh chỉ mục dữ liệu, các bạn cần xúc tiến một cơ chế đồng hóa hoá, có thể là plugin của Elastic
Search hoặc một service vị chính chúng ta xây dựng. Cơ chế đồng bộ hoá này rất có thể kéo toàn bộ các dữ liệu phù hợp cho từng thành phầm và lập chỉ mục trong Elastic
Search, vị trí mà sản phẩm được lưu bên dưới dạng tài liệu (document).

Khi người dùng nhập tiêu chí tìm tìm trên trang web, thì web ứng dụng triển khai truy vấn Elastic
Search cho tiêu chuẩn đó. Elastic
Search trả về sản phầm tương xứng với tiêu chí, cùng được bố trí theo cách chúng ta muốn.

Cách sắp xếp hoàn toàn có thể dựa bên trên điểm liên quan, cho biết từ search kiếm mở ra bao nhiều lần trong những sản phẩm, hoặc ngẫu nhiên thứ gì được tàng trữ trong thành phầm như là: cách thành phầm được thêm ngay gần đây, xếp bình dân bình, hoặc thậm chí còn là sự phối hợp của gần như thứ đó.

Việc chèn hoặc cập nhập thông tin vẵn có thể thực hiện tại trên cơ sở dữ liệu chính, do đó bạn chỉ sử dụng Elastic
Search để xử lý chức năng tìm kiếm.

Nó phụ thuộc vào vào cơ chế đồng hóa hoá để giúp cho Elastic
Search luôn cập nhập những thay đổi mới nhất.

Khi bạn có nhu cầu tích đúng theo Elastic
Search với gần như thành phần khác, bạn cũng có thể sử dụng mọi công cụ có sẵn đang tích hợp công dụng cần thiết.

Như họ sẽ xét nghiệm khá vào phần tiếp theo, tất cả một cộng đồng lớn, xây dựng lao lý (tools) đến Elastic
Search, và nhiều lúc bạn không buộc phải xây dựng bất kể thứ gì.

Phân tích tổng hợp tìm kiếm log, metric

Trong một vài trường vừa lòng thực tế, bạn chưa phải viết ngẫu nhiên dòng code nào đến Elastic
Search. Các công cụ có sẵn hoạt động với Elastic
Search, bởi vậy bạn không cần phải viết từ bỏ đầu.

Ví dụ: bạn có nhu cầu trển khai framework lưu lại log cùng với qui mô lớn bao hàm những chức năng: lưu lại trữ, tìm kiếm kiếm, với phần tích số lượng lớn những sự kiện.

Xem thêm: Tuyển tập đề thi học sinh giỏi lớp 5 môn tiếng việt 5 + đáp án(đề 1)

Như hình bản thân hoạ dưới đây, để cách xử lý log với xuất ra hiệu quả trong Elastic
Search, bạn có thể sử dụng nguyên lý log như Rsyslog (www.rsyslog.com) hoặc Logstash (www.elastic.co/products/logstash) hoặc Apache Flume (http://flume.apache.org). Để search kiếm với phân tích log trên hình ảnh trực quan, bạn cũng có thể sử dụng Kibana (www.elastic.co/products/kibana).

*

Elastic search vs SQL

The main difference Elastic
Search from My
SQl-search is that ES works faster when large amounts of data through indexing. The index contains ready-made sets of data with which you are operating further ES-filters. So if you tìm kiếm with ES, you haven’t to bởi a direct request to the database, as in My
SQL.

An “index” in database is a secondary data structure which makes WHERE queries and JOINs fast, và they typically store values exactly as they appear in the table. You can still have columns which aren’t indexed, but then WHEREs require a full table scan which is slow on large tables.

An “index” in ES is actually a schematic collection of documents, similar khổng lồ a database in the relational world. You can have different “types” of documents in ES, quite similar khổng lồ tables in dbs.

ES uses an inverted index khổng lồ efficiently find matching documents, but most importantly it typically “normalizes” strings into tokens so that accurate free-text search can be performed.

Elastic search vs Mongo DB

Mongo
DB
is a very popular and scalable No
SQL database that is a leader in document-oriented databases. It is usually the best solution when the use case necessitates a highly scalable database with high throughput transactions.

When it comes to lớn handling full-text search, log analytics, finding anomalies, & root cause detection, Elasticsearch is the clear winner.