Quá trình phát triển của Elasticsearch được mô tả trong dòng thời gian Kê từ khi ra mắt năm 2010, Elasticsearch đã nhanh chóng trở thành công cụ tìm kiếm thông dụng nhất và được sử dụng
Trang 1TRUONG DAI HQC KHOA HỌC XÃ HỘI VẢ NHÂN VĂN KHOA THƯ VIỆN - THÔNG TIN HỌC
MON : Hé théng tim tin GIANG VIEN : Duong Thi Phuong Chi
BAI TAP 2: Tim hiéu phan mém Elasticsearch
NHOM 1
Nguyễn Thị Minh Tính — 2156210131 Nguyễn Lê Công Dương — 2156210098
TP Hồ Chí Minh — 2023
Trang 2MỤC LỤC I GIỚI THIỆỆU 2-5 s21 E2EE21211E1121111 1171111 222211 1 H11 t1 ngu 1
TL Chive mang CO 0n ae 1 2 Chức năng tìm kiếm - S1 SE SỰ HE E12111 1 111121212 tr HH ra 3
2.1 Một số khái niệm cơ bản - 52c tt He 3
2.2 Cách Elasticsearch lưu trữ dữ liệu - L LQQQ TQ n SH kg ng ng ng 4
2.4 Tìm kiếm Full-Texf-Search -s- + cscxEE21222121121122121111 211111121 erre 7 2.5 Tìm kiếm Cross-Cluster Search - +: + s2 E2EE211212271211271211211 011kg 9 2.6 Tìm kiếm theo khoảng thời gian (Time-range search) 2s texerxeey 10 2.7 Tim kiém theo địa lý (Geo Search) 0 cccccccscsscsesssesesessesesvessvsvsesstevsesvevsvseeees II
2.8 Đánh giá kết quả tìm - - 5c c tEEE11211211211 1121211 1E 1n ng Hee re 14 HI NHẬN XÉT VÀ ĐỀ XUẤTT 5 5c 1E E112 11 12t ng ga 14
2 Đề xuất cải thiện c1 H11 1 n1 1211121 H ng ng gia 17 NGUON THAM KHAO oo ccccccccccsscssesesesessssesesesesvsvsreseseevevesesessatesesereacssstssvevsveveveeees 18
Trang 3I GIỚI THIỆU
Elasticsearch ra mat nam 2010, được phát triển bởi Shay Banon bằng ngôn ngữ Java, là mã nguồn mở theo giấy phép Apache 2.0 và phân tán thời gian thực, có khả năng mở rộng cao và hoạt động dựa trên nên tang Apache Lucene Shay Banon tao ra phan mềm tiền thân của Elasttcsearch, được gọi là Compass, trong nam 2004 Trong khi suy nghĩ về phiên bản thứ ba của Compass, ông nhận ra rằng cần thiết phải viết lại phần lớn Compass để "tạo ra một giải pháp tìm kiếm có khả năng mở rộng" Vì vậy, ông đã tạo ra "một giải pháp được xây dựng trên nguyên lý phân tán" và sử dụng các giao thức phổ biến là JSON và HTTP, thích hợp cho các ngôn ngữ lập trình khác, cũng như Java Quá trình phát triển của Elasticsearch được mô tả trong dòng thời gian
Kê từ khi ra mắt năm 2010, Elasticsearch đã nhanh chóng trở thành công cụ tìm kiếm thông dụng nhất và được sử dụng rộng rãi cho các trường hợp sử dụng liên quan đến tìm kiếm
Elasticsearch cung cap tim kiếm gần với thời gian thực dựa trên vị trí và thời gian, cho phép truy vấn và tìm kiếm đữ liệu mà không đòi hỏi thời gian đáp ứng kéo dài Công cụ hễ trợ tìm kiếm thông qua nhiều tiêu chí như từ khóa, trích dẫn, kết hợp tìm kiếm và sử
dụng ký tự đại diện, giúp người dùng tìm kiếm đữ liệu theo nhiều cách khác nhau.Chức
năng hỗ trợ tìm kiếm mờ (fuzzy) cho phép người dùng tìm kiếm từ khóa có thé bi sai lỗi chính tá hay không đúng cú pháp nhưng vẫn có thé trả về kết quả tốt
e Đánh chỉ mục và tìm kiếm dữ liệu Elasticsearch đánh chỉ mục đữ liệu đề tối ưu hóa quá trình tìm kiếm và truy vấn Công cụ này sử dụng mô hình chỉ mục ngược dong (inverted index) để tối ưu hóa quá trình tìm kiếm Elasticsearch sử dụng Lucene - một thư viện tìm kiếm mã nguồn mở - để thực hiện
Trang 4tìm kiếm ngược Điều này cho phép nó truy xuất các từ khóa và tài liệu chứa chúng nhanh chóng, tạo một cơ sở đữ liệu tốt hơn để tìm kiếm và tìm thấy thông tin
Tạo và cập nhập Index Công cụ cho phép tạo và quản lý các chỉ mục (indexes) để lưu trữ đữ liệu Mỗi index có thể đại diện cho một loại dữ liệu cụ thể hoặc một ứng dụng cụ thể Elasticsearch cho phép cập nhật cấu trúc chỉ mục bất kỳ lúc nào Cập nhat index là quan trọng khi dữ liệu của bạn thay đổi hoặc khi bạn muốn cải thiện cấu trúc chỉ mục để đảm bảo rằng nó phù hợp với
nhu cầu của ứng dụng Lưu trữ dữ liệu theo hướng tải liệu và nhóm các tải liệu theo loại và chỉ mục Elasttcsearch lưu trữ dữ liệu dưới dạng tài liệu (document), cho phép bạn tổ chức dữ liệu một cách hiệu quả và nhóm chúng theo các chỉ mục và loại khác nhau Với cách lưu trữ theo hướng tải liệu, mỗi mẫu đữ liệu có thể có cấu trúc đữ liệu riêng biệt, không cần phải
tuân thủ một mô hình cơ sở dữ liệu cố định Điều này rất hữu ích khi bạn làm việc với dữ
liệu có cấu trúc linh hoạt hoặc đa dạng Chức năng sắp xếp tài liệu
Elasticsearch cung cap kha nang sắp xếp kết quả tìm kiếm theo nhiều tiêu chí khác nhau, bao gồm sắp xếp theo độ phô biến, giá, thời gian, và nhiều yếu tế khác để hiển thị kết quả phù hợp nhất
Phân tích và thống kê đữ liệu day đủ
Elasticsearch cung cấp các công cụ mạnh mẽ cho phân tích dữ liệu và thống kê, các truy vấn tìm kiếm và tìm hiểu thông tin về đữ liệu, bao gồm từ khóa phố biến, phân phối, và xu hướng bao gồm tích hợp với Kibana để hiển thi biéu dé va báo cáo dữ liệu một cách dễ dàng Phần mềm cho phép bạn thực hiện thống kê dữ liệu bằng cách sử dụng tính năng tong hop (aggregation) Ban cé thé tổng hợp dữ liệu dựa trên nhiễu tiêu chí như loại dữ
liệu, thời gian, vị trí, và nhiều yếu tố khác
Chức năng sao chép vào cung cấp bản sao dự phòng dữ liệu trong trường hợp lỗi phần cứng
Công cụ cho phép bạn sao chép đữ liệu từ một nơi lưu trữ chính sang nhiều nơi sao chép Phương pháp này đám báo đữ liệu được nhân bản để tăng tinh san sang va dam bao sy an toàn của dữ liệu Elastiesearch tự động quản lý quá trình phục hồi dữ liệu khi có sự cố Khi một nút bị lỗi hoặc mắt kết nếi, các bản sao đang hoạt động sẽ được sử dụng để khôi phục đữ liệu và đám báo rằng hệ thống tiếp tục hoạt động
Tổng hợp dữ liệu và quán lý vòng đời chỉ mục Elastiesearch cho phép tổng hợp đữ liệu để làm sạch dữ liệu không còn cần thiết và quản lý vòng đời của chỉ mục để đảm bảo hiệu suất tốt nhất
Trang 5e Data ageregation, security analytics, analysis of business data Elasticsearch duoc sir dung dé téng hop dir ligu va phan tich dit ligu liên quan đến bảo mật và hoạt động kinh doanh, cung cấp thông tin quan trọng cho quản lý và ra quyết định e Logging and log analytics
Elasticsearch có kha nang ghi lại log hoạt động hệ thống và ứng dụng, sau đó phân tích các log để tìm hiểu hoạt động và tìm kiếm thông tin quan trọng
e Application performance monitoring Elasticsearch duoc su dụng để giám sát hiệu năng ứng dụng, theo dõi và đánh giá hiệu suất hệ thống để đám bảo hoạt động ổn định
Trang 62.1.2 Node Mỗi Node là 1 server bên trong Cluster, là nơi lưu trữ dữ liệu, tham gia thực hiện việc đánh Index của Cluster, và thực hiện Search Mỗi Node được xác định bởi 1 unique name cua Cluster dé Unique Name nay mae dinh 1a 1 chudéi random UUID (Universally Unique IDentifier - mét trinh tao ID duy nhat trên toàn cầu) và được gán giá trị ngay khi Node được sftart up Trong một Cluster không hạn chế số lượng các Node
2.1.3 Index Một Index là một tập hợp các Documents có đặc điểm chung Ví dụ, ta có một Index cho dữ liệu bài giảng, một Index khác cho sản phẩm, hoặc một index khác để sắp xếp đữ liệu Một index được được định danh bởi tên riêng, tên riêng viết thường, không viết hoa Tên này dùng để liên hệ đến index khi thực hiện tạo lập chỉ mục, tìm kiếm, cập nhật, xóa document trong đó Trong một cluster có thể chứa nhiều indexes
2.1.4 Document Một document là một đơn vị thông tin co ban để lập duoc index Vi dụ có một document cho một khách hàng, document khác cho một sản phẩm hay cho một đơn đặt hàng khác 2.2 Cách Elasticsearch lưu trữ dữ liệu
Elastiesearch không tự động lấy thông tin từ các nguồn dữ liệu bên ngoài hoặc bat kỳ nguồn dữ liệu cụ thể nào khác Thay vào đó, người dùng hoặc các nhà phát triển cần cấu hình Elasticsearch để chứa dữ liệu của họ trong cac "index." (ở đây người dùng có thể tự lưu trữ những đữ liệu hoặc tích hợp trực tiếp Elasticsearch vào trang web, ứng dụng, .để Elasticsearch nhận và trữ dữ liệu)
Mỗi "index" trong Elasticsearch tương ứng với một bộ dữ liệu lớn Trong ví dụ bên dưới nhóm đã thực hiện việc tự lưu những dữ liệu vào hệ thống chứ không tích hợp Elastics Search vào trang web, ứng dụng, phan mềm cụ thể nào Nhóm da tao mét index được gọi là "books" để chứa thông tin về các cuốn sách Mỗi cuốn sách sẽ được lưu trong "Index" này dưới dạng một tải liệu (chúng ta có thể lưu toàn văn của cuốn sách) Mỗi tài liệu có các trường (fñelds hay các thuộc tính của sách) tương ứng với các thông tin về cuốn sách (giá trị của thuộc tính), ví dụ như tiêu đề, tác giả, mô tả, năm xuất bản, v.v
Khi thêm một cuốn sách vào Elasticsearch, thông tin của cuốn sách này sẽ được lưu trong một tải liệu của Index "books." Elasticsearch sử dụng các thuật toán như
“Inverted index” để tối ưu quá trình tìm kiếm Khi thực hiện một truy vấn tìm kiếm,
Elasticsearch sẽ tìm trong các tài liệu của index "books" để xác định các cuốn sách phù hợp với truy vấn và sau đó trả về kết quả
Trang 7
Ví dụ phía trên nhóm đã thực hiện tạo một Index mang tên “books” trong Elastiesearch, và tạo ra ID cho sách mà mình đã lưu trữ là 1 (mỗi một sách lưu trữ phải tạo ra một ID riêng biệt) Sau đó tiếp tục tạo ra các thuộc tính (fields) của cuốn sách nay: “ttle”, “author”, “description”, “genre”, “isbn”, “publication_year” voi cac gia tri trong ứng
2.3 Structured Search - Structured Search trong Elasticsearch dé cap đến việc tìm kiếm dữ liệu sử dụng các
truy vấn có cấu trúc, thường được xây dựng dựa trên các tiêu chí cụ thể hoặc điều kiện Elasticsearch cung cấp một ngôn ngữ truy vấn đầy đủ, gọi là Query DSL (Domain-Specific Language), cho phép ngudi ding xây dựng các truy vấn phức tạp để tìm kiếm dữ liệu theo cấu trúc hoặc các điều kiện tùy chỉnh
- - Các loại tìm kiếm trong Structured Search:
Match Query: Tìm kiếm các tài liệu chứa một giá trị cụ thể trong một trường Truy van match duoc str dụng để tìm kiếm các tài liệu trong Index mà có một trường nào đó chứa một từ hoặc một cụm từ cụ thể Nó
không yêu cầu trường đó phải chứa PỄ
đúng từ hoặc cụm tir, nhung chi can chứa một phần của từ hoặc cụm từ Fỗ 13 print(result
đó
Trang 8Peer ee PU
Term Query: Truy vấn term được sử dụng để tìm kiếm các tài liệu trong Index mà có một trường có giá trị chính xác bằng voi gia tri chỉ định
Range Query: Truy van range cho phép tim kiếm các tài liệu trong Index mà có một trường có giá trị nam trong một khoảng chỉ định
Bool Query: Truy vấn bool cho phép Ê bạn kết hợp nhiều truy vấn với các quy tắc logic như: AND, OR, NOT
1 GET /books/ search
Giá sử chúng ta muốn tìm kiếm cuốn sách có nhan đề là “Data Mining” (Ta có thể thực hiện tương tự với các thuộc tính khác)
Người dùng muốn tìm kiếm cuốn sách có xuất hiện từ khoá “Data Mining” trong các trường “tHÌe”, genre”, “description”
Trang 9
Khi tìm kiếm bằng Keyword Search ta cũng có thể kết với với một số toán tử Bool (AND, OR)
- Đối với toán tử “AND”, như ví dụ
bên cạnh thì 2 từ khoá “Data” và “Mining” đồng thời phải xuất hiện cùng nhau ở trường “tttle” - Toán tử “OR” thì trong nhan đề phải xuất hiện một trong 2 từ khoá “Data” hoac “Mining”
2.4 Tim kiém Full-Text-Search
- Full-Text-Search là quá trình tim kiém thông tin trong một tập dữ liệu văn bản mà không chỉ dựa trên các thuộc tính hoặc từ khóa đơn lẻ mà còn trên nội dung day du cua tai ligu Trong Full-Text Search, hé théng tim kiém danh gia va so sanh van ban dau vào (truy vấn) với nội dung thực của các tài liệu (thông qua đánh gia vé: TF, IDF, Scoring, NLP va Matching) dé tra về các kết quá liên quan
- Ví dụminh hoạ: giả định toàn bộ dữ liệu đã được thêm vào Index
Trang 10
Full-TextSearch kết hợp với sử dụng Synonyms (Từ đồng nghĩa, bằng cách xác định các từ, cụm từ tương đương để tối ưu quá trình tìm kiếm, mở rộng phạm vi truy vấn và đảm bảo kết quả trả về không Dị hạn chế chỉ với một số từ cụ thê) Nhung chúng ta cân phải thiệt lập các từ đồng nghĩa trước khi bắt đầu tìm kiếm Trong ví dụ bên, nhóm đã thiết lập từ “car” băng với “automobile”, “tv” bang VỚI “television”
Fuzziness (Độ Mờ, là một cách để tìm kiếm các từ gân giống, điều này khả hữu ích khi người dùng nhập sai chính tả, hoặc không nhớ rõ về tài liệu mình muốn tìm) Cú pháp tìm khá giống với tìm Full-Text thông thường, chỉ cần thêm vào câu lệnh
thì độ mờ đã được thiệt lập một cách tự động Trong ví dụ bên cạnh từ khóa tìm kiếm “ 'serching” đã sai chính tả nhưng kết quả tìm sẽ bao gồm các văn bản chứa từ “searching” hoặc các biến thể gần đúng với từ này “serching”, “sereIng”,
, body=query
Trang 11
Full-Text-Search với Boosting (Tang Cuong Uu Tiên, một cách để tăng cường trọng số hoặc độ ưu tiên của một hoặc một SỐ truy van hoặc tập hợp các truy vấn so với các truy vấn khác)
Trong ví dụ bên cạnh, nhóm sử dụng truy vấn bool với hai truy vấn match Truy vấn đầu tiên vẫn tìm kiếm từ khoá "programming books" Truy vấn thứ hai Ê tìm kiếm tác giả là "Stephen King", nhưng | với một trọng số (boost: 2) Điều này có ry nghĩa là sach cua Stephen King sé duge wu [IE tién hién thi hon trong kết quá tìm kiếm so | với các cuốn sách chỉ chứa từ khoá |Ễ
Nhờ vào những tính năng này, Full-Text Search trong Elasticsearch không chỉ nhanh chóng mà còn chính xác và linh hoạt, tối ưu hóa quá trình tìm kiếm thông tin trên các tập dữ liệu lớn
2.5 Tìm kiếm Cross-Cluster Search - _ Cross-cluster search là một tính năng trong Elastiesearch giúp bạn tìm kiếm đữ liệu
trên nhiều cluster Elasticsearch khác nhau Như đã nói ở trên để giảm tình trạng tắc nghẽn khi một lưu trữ một lượng lớn dữ liệu trong một máy chủ, ta có thể chia các index để lưu trữ trên những máy chủ riêng biệt gọi là Node, tập hợp các Node gọi là Cluster Việc tìm kiếm như thế rất hữu ích khi chúng ta cần tìm thông tin từ các nguôn dữ liệu phân tán hoặc khi đã chia đữ liệu của mình thành các cluster riêng biệt vi lý do hiệu suất hoặc an toàn
- - Ví dụ minh hoa: