Bài viết này mình sẽ hướng dẫn các bạn cải thiện tốc độ tìm kiếm nội bộ trong WordPress một cách hiệu quả chính xác hơn và nhanh chóng hơn mà còn miễn phí nữa.
Trong quá khứ mình có viết một bài viết chia sẻ về cải thiện tốc độ tìm kiếm WordPress bằng algolia và bản thân mình cũng đang gắn bỏ sử dụng algolia. Nhưng hôm nay mình sẽ chia sẻ về công cụ Elasticsearch một công cụ cũng cực kì mạnh mà còn miễn phí toàn tập nữa.
algolia thì hoạt động từ bên máy chủ bên thứ 3 còn Elasticsearch là tự lưu trữ vì vậy nó đốt sử dụng khá nhiều ram máy chủ.
Vì vậy nếu bạn muốn sử dụng Elasticsearch thì bạn cũng đầu tư dư giả ram thì hoạt động mới được trơn tru được.
Công cụ Elasticsearch thì được các công ty lớn họ rất yêu chuộng:
Một số công ty nổi tiếng lựa chọn sử dụng Elasticsearch
- Facebook.com
- wordpress.com
- github
- adobe
- Netflix
- SoundCloud
- Wikimedia
- SoundCloud
- …
Mục lục
Vì sao phải cần Elasticsearch
nếu như website của bạn ít bài viết, hay ít sản phẩm việc sử dụng tìm kiếm mặc định của WordPress cũng rất ngon, tuy nhiên nếu website của bạn trên 50 bài viết thì tìm kiếm của WordPress mặc định sẽ không đáp ứng được từ độ chính xác và cũng như tốc độ.
Còn nhiều anh em bài viết trên vài nghìn thì khủng khiếp như thế nào.
còn chưa nói là search mặc định của WordPress sử dụng mysql dùng truy vấn LIKE thì nó search từ ngữ không dấu thì còn khá chuẩn nhưng mà dùng có dấu như tiếng việt có dấu thì độ chính xác rất là khoai. Nó cũng chính là phần giới hạn về kỹ thuật của MYSQL không được sinh ra để làm công cụ search tìm kiếm nội dung vì vậy search của WordPress mặc định hơn chán một chút.
mặc định search tìm kiếm của WordPress rất là cùi bắp chỉ đáp ứng ở mức nhu cầu rất cơ bản còn nhu cầu yêu cầu cao một chút mình cần phải thay thế bằng phần mềm bên thứ 3.
Mà phần mềm bên thứ 3 để giải quyết vấn đề này rất nhiều mà được yêu chuộng nhất ở thời điểm hiện tại chính là Elasticsearch
Hướng dẫn cài đặt Elasticsearch
Yều cầu để kích hoạt Elasticsearch
- Yêu cầu bạn đang sử dụng VPS hoặc máy chủ riêng của quyền root nhé còn anh em dùng share hosting thì kèo này e là khó, nếu bạn đang dùng share hosting thì mình đề cử tham khảo algolia.
- Cụ thể hướng dẫn thị phạm mình sẽ hướng dẫn hệ điều hành CENTOS 7, Almalinux 8…
- Máy chủ của bạn cũng dư giả ram Elasticsearch sử dụng khá là nhiều RAM
- website của bạn nhiều bài viết hay nhiều sản phẩm thì mới thực sự cần Elasticsearch còn ít sản phẩm và ít bài viết thì Elasticsearch là không cần thiết.
Anh em login vào ssh vps hay máy chủ riêng của anh em
Bước 1: Cài đặt JAVA (cài đặt java để có thể sử dụng Elasticsearch )
elasticsearch sử dụng java để phát triển vì vậy mình cần java.
Vì vậy để sử dụng elasticsearch bạn cần cài đặt từ cấp server vì nó được viết bằng java không phải là được viết bằng mỗi php thôi không. Nếu chỉ viết bằng php thôi không thì chỉ cần mỗi plugin wordpress là hoạt động được ngay.
Để sử dụng elasticsearch cần phải cài đặt từ server của bạn.
Cài đặt java:
yum install java-1.8.0-openjdk-devel -y
Bước 2: Cài đặt Elasticsearch
Mình sẽ tải elasticsearch phiên bản 7.9 đây là phiên bản tốt nhất dành cho WordPress hiện tại, nếu tiện thì có thể sử dụng kho lưu trữ của CENTOS để cài đặt nhưng mình muốn cài version cũ hơn chút và chính xác phiên bản mình mong muốn vì vậy mình sử dụng build từ mã nguồn
yum install wget -y
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-x86_64.rpm
Tiến hành cài đặt elasticsearch:
sudo rpm -ivh elasticsearch-7.9.2-x86_64.rpm
Khi đã install xong giờ thì mình xóa file cài đặt elasticsearch cho nhẹ ổ cứng
rm -f elasticsearch-7.9.2-x86_64.rpm
Cấu hình elasticsearch: /etc/elasticsearch/elasticsearch.yml
bạn có thể sử dụng nano hoặc trình sửa văn bản nào cũng được đưa đoạn code này ở xuống cuối file
cluster.name: wordpress node.name: wptangtoc network.host: 127.0.0.1 http.port: 9200 node.max_local_storage_nodes: 1
Điều chỉnh mức sử dụng ram: /etc/elasticsearch/jvm.options
Cấu hình mặc định elasticsearch được thiết lập dùng 1G ram, nhưng không phải máy chủ nào cũng dư giả 1gb ram bạn có thể điều chỉnh cho nó phù hợp với tài nguyên hiện tại của bạn giả sử: mình sẽ config xuống chỉ dùng 512MB ram mà thôi. Nếu bạn dư giả tài nguyên ram thì có thể tăng thêm.
Ví dụ hãy chuyển từ 1g ram xuống còn 512mb vào file /etc/elasticsearch/jvm.options sửa như thế này : -Xms1g thành -Xms512m và -Xmx1g thành -Xmx512m
-Xms512m -Xmx512m
Tiến hành khởi động elasticsearch
systemctl enable elasticsearch.service systemctl start elasticsearch.service
Kiểm tra hoạt động của elasticsearch đã hoạt động chưa:
curl -X GET http://localhost:9200/
Như vậy là các bước cài elasticsearch cho server đã hoàn tất bây giờ đến bước kích hoạt elasticsearch cho WordPress nhé.
Bước 3: Kích hoạt elasticsearch cho WordPress
Mình cần sử dụng plugin: ElasticPress bạn kích hoạt plugin này vào website wordpress của bạn.
Plugin này giúp website WordPress của bạn giao tiếp với Elasticsearch trên máy chủ của bạn.
Bạn cho đoạn code này vào file wp-config.php của bạn cho dòng thứ 2 (dưới dòng <?php)
define( 'EP_HOST', 'http://127.0.0.1:9200' );
Rồi bạn vào quản trị wp-admin => plugin elasticsearch config next next mấy cái rồi, có phần index dữ liệu thì bạn index dữ liệu
và ngồi đợi máy chủ làm việc tốc độ nhanh hay chậm tùy vào số lượng dữ liệu của bạn và cấu hình phần cứng của bạn.
như vậy là xong rồi.
Sau khi đồng bộ index ban đầu, plugin sẽ tự động đồng bộ hóa tất cả các thay đổi và bổ sung sau này.(bạn không cần phải reindex thủ công lại khi dữ liệu thay đổi nhiều dữ liệu việc này sẽ tự động hoàn toàn nhờ plugin ElasticPress)
Còn phần cấu hình các trọng số giá trị bài viết ưu tiên thứ tự tìm kiếm trong phần cài đặt plugin ElasticPress thì mỗi người một nhu cầu, một chiến lược khác nhau khoản này thì bạn tự nghiên cứu và điều chỉnh sao cho phù hợp với nhu cầu của mình. Điều chỉnh cái này plugin ElasticPress điều chỉnh giao diện rất trực quan rất dễ hiểu.
một tip tối ưu elasticsearch hơn nữa, nếu như bạn sử dụng tính năng Highlighting status được cài đặt ở plugin elasticpress là bạn có thẻ tải điều kiện file css của plugin elasticpress, bạn cho đoạn code này vào file functions.php
của bạn
add_action('wp_enqueue_scripts', 'wptangtoc_tai_dieu_kien_elasticpress', 99); function wptangtoc_tai_dieu_kien_elasticpress() { if( ! is_search()) { wp_deregister_style('searchterm-highlighting'); } }
Trong một số trường hợp nâng cao là bạn sử dụng search live thời gian thực dạng ajax thì cần phải làm thêm bước này, nếu website bạn không sử dụng cái này thì bạn bỏ qua.
Ví dụ bạn đang sử dụng search live ajax của themes flatsome: thì bạn vào đường dẫn này : wp-content/themes/flatsome/inc/extensions/flatsome-live-search/flatsome-live-search.php
cho đoạn code này vào dòng 141 trong array nhé
'ep_integrate' => true,
Mỗi một plugin thì cách add khác nhau hoặc các nhà phát triển plugin cũng có thể đã auto kiểm tra và tự động add cho bạn tùy vào nhà phát triển làm tính năng search ajax đó.
Kích hoạt Elasticsearch cho Website WordPress đơn giản như vậy thôi, chúc bạn thành công.
đây là kỹ thuật cải thiện tốc độ search cho wordpress và nâng cao khả năng chính xác khả năng tìm kiếm rất hữu ích với website có nhiều bài viết và có nhiều sản phẩm, nếu website còn ít sản phẩm và ít bài viết thì Elasticsearch là thực sự không cần thiết lắm.
Hy vọng kỹ thuật này sẽ giúp ích cho bạn.
Để lại một bình luận