October 20, 2021

Build ứng dụng Search đơn giản với Elasticsearch, AngularJS, Python và Apache Tomcat

Liệu mình có thể tạo ra 1 ứng dụng tìm kiếm đơn giản cho mình không? Tại sao không nhỉ? Chúng ta sẽ bắt đầu với cái đơn giản nhất từ những thứ đã có.

Các bạn cũng đã biết Elasticsearch là một seach engine mãnh mẽ. Các bạn muốn tìm hiểu thêm về nó thì có thể hỏi anh Google là sẽ cho một đống bao gồm cả tiếng việt và tiếng anh, tha hồ mà bạn nghiền ngẫm, ngấu nghiến nó !.

Nay mình chỉ trình bày đơn giản là thử tạo ứng dụng search đơn giản từ Elasticsearch, AngularJS, Python và Apache Tomcat như thế nào?

Ở đây mình thử nó trên môi trường window. Mình cần chuẩn bị một số thứ:

Trước tiên bạn download source code về máy

git clone https://github.com/vivekkalyanarangan30/searchengine

Ta sẽ có được 1 thư mục tên là ‘seachengine‘. Chúng ta sẽ sẽ nhìn thấy trong thư mục ‘searchengine‘ có một thư mục ‘FrontEnd‘ – đây chính là source code angularjs cho phần giao diện, chúng ta sẽ copy thư mục ‘FrontEnd‘ vào trong thư mục cài đặt của tomcat: apache-tomcat-8.x/webapps/

Kế đến, chúng ta download dữ liệu demo về.

https://drive.google.com/file/d/0B_-Qs9TMzKukQURiR2xxdDVXYms/view

Sau khi download xong, chúng ta sẽ có file ‘people_wiki.csv‘ . Bạn nhớ copy file ‘ people_wiki.csv‘ vào thư mục ‘searchegine/data/‘ nhé !.

Cài đặt thêm một số thư viện cần thiết cho project

cd searchengine
pip install -r pythonrequirements.txt

Xong, chúng ta bắt đầu vào vấn đề chính.

Trở lại source code, chúng ta cần điều chỉnh source code một chút để nó chạy được trên máy của mình.

//file searchenginepythonconfig.py

================old==================
if platform.system()=='Windows':
    host = '192.168.99.100'
else:
    host = 'localhost'

url = 'http://192.168.99.100:9200/wiki_search

===============new=================
#if platform.system()=='Windows':
#    host = '192.168.99.100'
#else:
#    host = 'localhost'

url = 'http://localhost:9200/wiki_search
//file searchenginepythonindexing.py
==================old====================
data = pd.read_csv('/usr/local/searchengine/data/people_wiki.csv')

==================new===================
data = pd.read_csv('../data/people_wiki.csv')

Xong. chúng ta bắt đầu start theo thứ tự sau:

  1. Start Elasticsearch
call cd elasticsearchbin
call elasticsearch.bat
call cd ..
call cd ..

1.1 kiểm tra xem Elasticsearch đã start chưa bằng cách truy cập http://localhost:9200 nếu đạt kết quả như bên dưới là thành công

2. Start search engine config

call cd python
call python config.py
call cd ..

3. Start search engine đánh index

call cd python
call python indexing.py
call cd ..

4. Start front end

call cd apache-tomcat-8.xbin
call startup.bat
call cd ..
call cd ..

5. Kiểm tra kết quả, chúng ta truy cập http://localhost:8080/FrontEnd/ sẽ thu được kết quả như sau:

Thật đơn giản phải không? còn lại là bạn thích tìm hiểu, vọc phá hay thêm thắt code gì đó nếu thích.!!

****Note*** : Nếu trong quá trình chạy frontend, bạn gặp lỗi như hình bên dưới.

Thì bạn vui lòng cái thêm extension Allow-Control-Allow-Origin nữa nhé. Link cho chrome: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi . Bạn có thể tìm những extension tương tự cho firefox,….

Nếu muốn xài docker thì mọi người cũng có thể tham khảo ở đây:

và mọi người cũng có thể triển khai chúng trên môi trường cloud . Google Cloud Platform hoặc Amazon Web Service đều được.

Liên hệ ngay với chúng tôi, Cloud Ace Việt Nam để được tư vấn về G Suite, Google Cloud Platform (GCP).

Bao Vuong

Vương hiện là Cloud Engineer của Cloud Ace Vietnam.+6 năm kinh nghiệm phát triển backend +2 năm kinh nghiệm Data Analytics +1 năm kinh nghiệm Machine Learning

View all posts by Bao Vuong →