Tải bản đầy đủ (.pdf) (21 trang)

TIỂU LUẬN TÌM HIỂU MÁY TÌM KIẾM ELASTIC SEARCH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.18 MB, 21 trang )

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG

BÁO CÁO
BÀI TẬP LỚN
ĐỀ TÀI : TÌM HIỂU MÁY TÌM KIẾM
ELASTIC SEARCH
Giảng Viên

: Hà Thị Thanh

Nhóm thực hiên

:7

Tên thành viên

: Nguyễn Trí Dũng
Hồng Tùng Dương
Nguyễn Tất Đạt
Phạm Tú Anh
Nguyễn Văn Dương

Lớp

: CNTT-K16E
Thái Nguyên, tháng 4 năm 2021

Chương 1 :Máy tìm kiếm ElascticSearch
1.1 : Khái niệm máy tìm kiếm ElascticSearch


1


- Elasticsearch là một cơng cụ tìm kiếm và phân tích phân tán, là một RESTful mã nguồn
mở được xây dựng trên Apache Lucene. Kể từ khi phát hành vào năm 2010 thì
Elasticsearch đã nhanh chóng trở thành một trong những cơng cụ tìm kiếm được tsử
dụng thơng dụng nhất và được sử dụng rộng rãi trong những trường hợp liên quan đến
phân tích nhật ký và tìm kiếm văn bản, thơng tin bảo mật và phân tích nghiệp vụ cũng
như thông tin vận hành.

1.2 : Ưu điểm và Nhược điểm
1.2.1 : Ưu điểm
1 Có khả năng tìm kiếm và phân tích dữ liệu.
2 Có khả năng mở rộng theo chiều ngang.
3 Hỗ trợ tìm kiếm khi từ khóa tìm kiếm có thể bị lỗi.
4 Hỗ trợ các Elasticsearch client như Java, Php, JS, Ruby,….
5 Tốc độ: dùng elasticsearch trả về giá trị rất nhanh, vì chỉ cần tìm kiếm 1
term là trả về các giá trị liên quan tới term đó
6 Xây dựng trên Lucene: Vì được xây dựng trên Lucene nên Elastice Search
cung cấp khả năng tìm kiếm toàn văn bản (full-text) mạnh mẽ nhất.
7 Hướng văn bản: Nó lưu trữ các thực thể phức tạp dưới dạng JSON và đánh
index tất cả các field theo cách mặc định, do vậy đạt hiệu suất cao hơn.
8 Giản đồ tự do: Nó lưu trữ số lượng lớn dữ liệu dưới dạng JSON theo cách
phân tán. Nó cũng cố gắng phát hiện cấu trúc của dữ liệu và đánh index của
dữ liệu hiện tại, làm cho dữ liệu trở nên thân thiện với việc tìm kiếm.
1.2.2 : Nhược điểm
1

Elasticsearch được thiết kế cho mục đích search cho nên khi sử dụng thì
chúng ta nên sử dụng kèm theo một DB khac như MongoDB hay Mysql.


2

Trong Elasticsearch không đảm bảo được toàn vẹn dữ liệu của các hoạt
động như Insert, Update hay Delete.

3

Khơng thích hợp với những hệ thống thường xun cập nhật dữ liệu. Sẽ rất
tốn kém cho việc đánh index dữ liệu.

4

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 (Create Read Update Destroy) thì
elasticsearch 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.

5

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 động Insert, Update,
2


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.
6


Khơng thích hợp với những hệ thống thường xun cập nhật dữ liệu. Sẽ rất
tốn kém cho việc đánh index dữ liệu.

Chương 2 : Một số khái niệm cơ bản của máy tìm kiếm
Elastic Search
2.1 : Document
• Là đơn vị nhỏ nhất để lưu trữ dữ liệu trong Elasticsearch. Đây là một đơn vị
lưu trữ thông tin cơ bản trong Elasticsearch, là một JSON object đối với một
số dữ liệu.
• Ví dụ : Chào mừng đến với Cloud 365.
2.2 : Index
• Trong Elasticsearch có một cấu trúc tìm kiếm gọi là inverted index, nó được
thiết kế để cho phép tìm kiếm full-text search. Cách thức khá đơn giản, các
văn bản được tách ra thành từng từ có nghĩa sau đó sẽ được map xem thuộc
văn bản nào và khi search sẽ ra kết quả cụ thể.
• Có 2 kiểu đánh index và forward index và inverted index. Bản chất của
inverted index là đánh theo keyword: words -> pages còn forward đánh theo
nội dung page -> words.
2.3 : Shard
• Shard là một đối tượng của Lucence, là tập hợp con của một Index. Một
index có thể được lưu trên nhiều shard.
• Một node bao gồm nhiều Shard, shard chính 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.

3


• Chúng ta sẽ không bao giờ làm việc với các shard vì Elasticsearch sẽ hỗ trợ
chúng ta tồn bộ việc giao tiếp cũng như tự động thay đổi các Shard khi cần

thiết.
• Elasticsearch cung cấp 2 cơ chế của shard đó là primary shard và replica
shard.
• Primary shard sẽ lưu trữ dữ liệu và đánh Index, sau khi đánh dữ liệu xong sẽ
được vận chuyển đến các replica shard, mặc định của Elasticsearch mỗi
index sẽ có 5 Primary shard thì sẽ đi kèm với 1 Replica shard.
• Replica shard là nơi lưu trữ dữ liệu nhân bản của Elasticsearch, đóng vai trị
đảm bảo tính tồn vẹn dữ liệu khi Primary shard xảy ra vấn đề, ngồi ra nó
cịn giúp tăng tốc độ tìm kiếm vì chúng ta có thể cấu hình lượng Replica
shard nhiều hơn cấu hình mặc định của Elasticsearch.
2.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 xác định bằng một tên riêng và khơng được phép trùng lặp.
2.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 là quyết định xem shard 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.

4



Chương 3 : Cấu trúc dữ liệu trong Elastic Search
• Không giống như cơ sở dữ liệu quan hệ, lưu trữ dữ liệu vào hàng,
ElasticSearch lưu trữ dữ liệu trong tài liệu.
• Tuy nhiên, ở một mức độ nào đó, 2 khái niệm này giống nhau. Với các hàng
trong một bảng, bạn có các cột, với mỗi cột, mỗi hàng thì có 1 giá trị. Với tài
liệu thì có key và value, cũng tương tự như vậy.
• Sự khác biệt là một tài liệu thì linh hoạt hơn một hàng, lí do chính là trong
ElasticSearch tài liệu được phân nhiều cấp.
• Ví dụ: Giống như cách bạn liên kết khố với giá trị chuỗi “author” : “Joe”.
Một tài liệu có thể lưu mảng chuỗi “tag” : [“cycling”, “bicycles”], hoặc thậm
chí là cặp giá trị “author” : {“first_name”: “Joe”, “last_name”: “Smith”}.
• Tính linh hoạt này rất quan trọng bởi vì nó khuyến khích bạn lưu trữ những
thực thế có cùng logic trong một tài liệu, trái ngược với việc lưu trữ ở các
hàng và các bảng khác nhau.
• Ví dụ: cách dễ nhất (và có thể là nhanh nhất) là lưu trữ tất cả dữ liệu một bài
viết trong cùng một tài liệu. Bằng cách này, việc tìm kiếm sẽ nhanh bởi vì
bạn khơng cần phải liên kết với các bảng khác.
• Nếu bạn có nền tảng về SQL, bạn phải bỏ qua các chức năng join, ít nhất là
trong phiên bản 1.76. Khi tất cả mọi thứ đã sẵn sàng, bạn có thể tải cài đặt
ElasticSearch và bắt đầu.

Chương 4 : Cách Elastic Search lưu trữ dữ liệu

5


• Với ES, Document là đơn vị tìm kiếm và đánh index. Một index có thể bao
gồm một hay nhiều Document, và một Document có thể chứa một hay nhiều

Fields. Trong thuật ngữ về Database, thì một Document có thể hiểu như một
table row và một Field tương ứng với một table column. ES có đặc điểm
schema-free, có nghĩa là ta không cần phải chỉ rõ ra cấu trúc của schema
trước khi đánh index cho các documents. Một schema sẽ bao gồm các thơng
tin sau:
• Các fields
• Các ràng buộc: unique/primary key
• Các required fields
• Đánh index và search mỗi field như thế nào Mapping là quá trình định
nghĩa làm thế nào một document và các fields của nó được lưu trữ và
đánh index. Mỗi index có duy nhất 1 kiểu mapping, và mapping type
này sẽ quyết định cách các document sẽ được index. Mapping type
gồm Meta-fields và Properties
• Meta-fields: cho phép chúng ta customize các behavior của các
document
• Fields/Properties: danh sách các properties tương ứng với các
document Mỗi property bao gồm 1 data-type type, là kiểu dữ liệu của
prop đó. type có thể là text, keyword, date, double, boolean ...

Chương 5 : Chức năng chính của Elastic Search

6


• ElasticSearch cho phép bạn truy cập các chức năng đánh chỉ mục và tìm
kiếm dữ liệu của Lucene. Về chức năng lập chỉ mục bạn có nhiều tuỳ chọn
về xử lý văn bản và cách lưu trữ các văn bản đã được xử lý.
• Khi tìm kiếm, bạn có nhiều câu truy vấn và bộ lọc để chọn. ElasticSearch
hiển thị chức năng này thông qua REST API, cho phép bạn cấu hình câu truy
vấn trong JSON và điều chỉnh hầu hết cấu hình, cho dù chúng cùng API.

• Ngồi những chức năng Lucence cung cấp, ElasticSearch còn bổ xung chức
năng cấp cao (high level), từ bộ nhớ đệm đến phân tích thời gian thực.
• Ở mức độ trừu tượng khác là cách bạn có thể sắp xếp tài liệu: nhiều chỉ
mục có thể tìm kiếm riêng hoặc cùng nhau, và bạn có thể đặt các loại tài
liệu khác nhau trong mỗi chỉ mục.
• ElasticSearch đúng như tên gọi của nó co giãn (elastic). Nó được phân cụm
theo mặc định – bạn có thể gọi nó là một cụm (cluter) thậm chí khi bạn chỉ
có một server duy nhất – và bạn ln ln có thể thêm nhiều server để
tăng dụng lượng hoặc khả năng chịu lỗi.

Chương 6 : các hãng sử dụng Elastic Search
• Wikimedia
• athenahealth
• Adobe Systems
• Facebook
• StumbleUpon Mozilla,
• Amadeus IT Group
• Quora
• Foursquare
• Etsy
• SoundCloud
• GitHub
7


• FDA
• CERN
• Stack Exchange
• Center for Open Science
• Reverb

• Netflix
• Pixabay
• Motili
• Sophos
• Slurm Workload Manager

Chương 7 : Kết luận
o Elasticsearch là một search engine.
o Elasticsearch được kế thừa từ Lucene Apache
o 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
o Elasticsearch có khả năng phân tích và thống kê dữ liệu
o 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ả.
o 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.
o • Elasticsearch là 1 open source được phát triển bằng Java
8


o Elascticsearch là một cơng cụ hỗ trợ việc tìm kiếm cực kì mạnh mẽ và
nhanh chóng, nhưng khơng phải dự án nào áp dụng Elascticsearch là
hiệu quả, trái lại nó cịn phát sinh ra nhiều lỗi khơng mong muốn. Vì
vậy, hãy xem xét thật kỹ về yêu cầu của dự án trước khi áp dụng
Elascticsearch


Chương 8 : Hướng dẫn cài đặt
8.1 : Cài đặt Elastic Search

9


10


11


12


13


14


15


16


17



8.2 : Ánh xạ thư mục

18


Chọn đường dẫn : C:\Users\Rijnsu\Downloads\kibana-7.12.0-windows-x86_64\
kibana-7.12.0-windows-x86_64
Vào terminer ,mở thư mục
câu lệnh
cd+ tên đường dẫn
cd + C:\Users\Rijnsu\Downloads\kibana-7.12.0-windows-x86_64\kibana-7.12.0windows-x86_64

Mở sever localhost kibana ta thêm lệnh: .\bin\kibana.bat

19


Truy cập địa chỉ:

Giao diện :

20


Bắt đầu với Elastic search :

Tài liệu tham khảo
[1]. />[2]. />[3]. />[4]. />[5]. />
21




×