TỔNG QUAN
WP Elasticsearch Giải Quyết Vấn Đề Gì?
- ⏱️ Tìm kiếm sản phẩm chậm chạp khi có hàng nghìn sản phẩm?
- 🔍 Khách hàng không tìm thấy sản phẩm dù gõ đúng tên?
- 📉 Tỷ lệ chuyển đổi thấp vì trải nghiệm tìm kiếm kém?
- 🐌 Website tải chậm khi filter nhiều thuộc tính?
WP Elasticsearch là giải pháp toàn diện giúp bạn:
- ⚡ Tăng tốc tìm kiếm lên 100 lần - Kết quả hiển thị tức thì dù có hàng triệu sản phẩm
- 🎯 Tìm kiếm thông minh - Gõ sai chính tả vẫn hiển thị đúng sản phẩm
- 🔄 Đồng bộ tự động - Cập nhật ngay khi bạn thay đổi sản phẩm
- 📊 Không cần kiến thức kỹ thuật - Giao diện trực quan, dễ sử dụng
- 💪 Ổn định & tin cậy - Tự động kiểm tra và sửa lỗi đồng bộ
Tính Năng Nổi Bật
⚡ Nhanh Như Chớp
- Tìm kiếm tức thì dù hàng triệu sản phẩm
- Cập nhật ngay khi bạn lưu sản phẩm
- Xử lý hàng loạt siêu tốc
- Không làm chậm website
🤖 Tự Động Hoàn Toàn
- Đồng bộ khi bạn thêm/sửa/xóa sản phẩm
- Tự kiểm tra lỗi mỗi giờ
- Tự sửa dữ liệu không khớp
- Không cần can thiệp thủ công
📊 Giám Sát Dễ Dàng
- Giao diện trực quan, dễ hiểu
- Nhật ký chi tiết mọi hoạt động
- Thông báo rõ ràng khi có lỗi
- Xem tiến độ đồng bộ real-time
🛡️ Ổn Định & An Toàn
- Tự động khôi phục khi gặp lỗi
- Không làm mất dữ liệu gốc
- Chạy nền không ảnh hưởng website
- Hỗ trợ website lớn (>100K SP)
Yêu Cầu Cài Đặt
| Yêu cầu | Phiên bản tối thiểu | Khủyến nghị |
|---|---|---|
| WordPress | 5.0+ | Phiên bản mới nhất |
| WooCommerce | 3.0+ | Phiên bản mới nhất |
| PHP | 7.4+ | PHP 8.0 trở lên |
| Elasticsearch | 7.x | 7.x hoặc 8.x |
| RAM Server | 256MB | 512MB+ cho >10,000 sản phẩm |
Nếu bạn chưa có Elasticsearch, vui lòng liên hệ admin server để cài đặt. Plugin này chỉ đồng bộ dữ liệu, không bao gồm việc cài đặt Elasticsearch.
BẮT ĐẦU SỬ DỤNG
Bước 1: Kích Hoạt Plugin
- Vào WordPress Admin → Plugins
- Tìm WP Elasticsearch
- Click Activate
- ✅ Tạo cơ sở dữ liệu theo dõi
- ✅ Bật chế độ cập nhật tự động
- ✅ Chuẩn bị sẵn sàng sử dụng
Bước 2: Kiểm Tra Menu
Sau khi kích hoạt, bạn sẽ thấy menu Elastic Search trên thanh quản trị:
| 📦 Index Product | Đồng bộ sản phẩm WooCommerce |
| ⚙️ Config | Cấu hình kết nối Elasticsearch |
| 📊 Log | Xem nhật ký hoạt động |
CẤU HÌNH & KẾT NỐI
Truy cập: WordPress Admin → Elastic Search → Config
Thông Tin Kết Nối
| Elasticsearch URL |
http://localhost hoặchttp://IP-server hoặchttps://domain.com
|
| Port | 9200 (mặc định) |
| Username | Để trống nếu không có bảo mật |
| Password | Để trống nếu không có bảo mật |
Tùy Chỉnh Nâng Cao (Tùy chọn)
| Cài đặt | Dùng khi nào? | Giá trị đề xuất |
|---|---|---|
| Number of Shards | Website nhỏ/vừa | 1 |
| Website lớn (>100K sản phẩm) | 3-5 | |
| Number of Replicas | Chỉ 1 server | 0 |
| Nhiều server (backup) | 1-2 | |
| Total Field Limit | Mặc định (đủ dùng) | 15000 | Analyzer Language | english, vietnamese, thai... | Tùy ngôn ngữ website |
3.7. Cấu Hình Cron Job (Tùy Chọn)
Cron Job tự động đồng bộ sản phẩm theo lịch - dùng cho hệ thống lớn.
- Click 🔑 Generate để tạo key ngẫu nhiên
- Copy Cron URL
- Dán vào Cron service
Ví dụ URL:
https://your-site.com/wp-json/sync/es?token=abc123xyz456
Cài đặt trong cPanel Cron Jobs:
*/5 * * * * curl -X GET "https://your-site.com/wp-json/sync/es?token=YOUR_TOKEN" >/dev/null 2>&1
ĐỒNG BỘ SẢN PHẨM
📍 Truy cập: WordPress Admin → Elastic Search → Index Product
Quy Trình 3 Bước Đơn Giản
- Nhập Tên Index (ví dụ:
products) - Click nút 📋 Create Mapping
- Đợi 5-10 giây
- Thấy thông báo "✅ Successfully" là xong!
- Click nút 📦 Prepare Index Data
- Plugin sẽ đánh dấu tất cả sản phẩm cần đồng bộ
- Bạn sẽ thấy số lượng sản phẩm đang chờ
- Click nút ▶️ Index Data
- Theo dõi thanh tiến trình (progress bar)
- Đợi đến khi hoàn thành 100%
- Xong! Tất cả sản phẩm đã được đồng bộ
- 1,000 sản phẩm: ~2-3 phút
- 10,000 sản phẩm: ~15-20 phút
- 100,000 sản phẩm: ~2-3 giờ
6. AUTO VERIFY & SYNC
6.1. Giới Thiệu
Auto Verify & Sync là tính năng mới v1.3.7 - tự động kiểm tra và đồng bộ dữ liệu giữa Database và Elasticsearch mỗi giờ.
6.2. Quy Trình Hoạt Động
- Kiểm Tra Tổng Số (Verify Total Count)
- So sánh tổng số sản phẩm trên Database vs Elasticsearch
- Nếu khác: tiếp tục bước 2
- Phát Hiện Sản Phẩm Thiếu (Find Missing Products)
- Tìm sản phẩm tồn tại trên DB nhưng không có trên ES
- Đánh dấu để reindex tự động
- Phát Hiện Sản Phẩm Thừa (Find Extra Products)
- Tìm sản phẩm tồn tại trên ES nhưng bị xóa trên DB
- Xóa tự động khỏi ES
- Sửa Sản Phẩm Lỗi (Fix Failed Products)
- Tìm sản phẩm có status=2 (lỗi) vẫn tồn tại trên ES
- Xóa khỏi ES để không ảnh hưởng
- Ghi Log (Database Logging)
- Ghi lại tất cả hoạt động vào database
- Xem chi tiết từ Admin → Elasticsearch → Log
6.3. Xem Nhật Ký
Truy cập WordPress Admin → Elasticsearch → Log để xem:
- 📝 Tất cả hoạt động verify & sync
- 🔍 Tìm kiếm theo từ khóa
- 🏷️ Lọc theo loại log
- 📅 Lọc theo ngày
- ⬆️⬇️ Sắp xếp theo cột
CẬP NHẬT TỰ ĐỘNG
Plugin Tự Động Cập Nhật Khi Bạn:
📝 Thêm/Sửa Sản Phẩm
- Tạo sản phẩm mới
- Chỉnh sửa thông tin
- Đổi giá, tên, mô tả
- Cập nhật hình ảnh
🏷️ Quản Lý Phân Loại
- Thay đổi danh mục
- Thêm/bớt tags
- Cập nhật thuộc tính
- Đổi brand
📦 Cập Nhật Kho
- Thay đổi số lượng
- Đặt trạng thái stocked
- Cập nhật SKU
- Quản lý variations
🗑️ Xóa Sản Phẩm
- Chuyển vào thùng rác
- Xóa vĩnh viễn
- Khôi phục từ rác
- Tự động dọn dẹp
Khi bạn click "Cập nhật" sản phẩm trong WordPress:
- ✅ Dữ liệu được đánh dấu cập nhật ngay lập tức
- ✅ Elasticsearch nhận thông tin sau vài giây
- ✅ Khách hàng tìm kiếm thấy dữ liệu mới luôn
Bạn không cần chạy lại đồng bộ thủ công!
TỰ KIỂM TRA & SỬA LỖI
Plugin Tự Động Sửa Những Vấn Đề Này:
Nguyên nhân: Có thể do lỗi mạng, server quá tải khi đồng bộ...
Giải pháp: Plugin tự động phát hiện và đồng bộ lại sản phẩm thiếu.
Nguyên nhân: Bạn đã xóa sản phẩm trong WooCommerce nhưng ES chưa xóa...
Giải pháp: Plugin tự động xóa sản phẩm không còn tồn tại.
Nguyên nhân: Một số sản phẩm fail nhiều lần...
Giải pháp: Plugin tự động dọn dẹp và thử đồng bộ lại.
Xem Nhật Ký Hoạt Động
Muốn biết plugin đã làm gì? Vào WordPress Admin → Elasticsearch → Log
- 📝 Xem tất cả hoạt động tự động
- 🔍 Tìm kiếm theo từ khóa
- 📊 Kiểm tra số liệu thống kê
- ⏰ Xem lịch sử theo ngày
deleted_comment
transition_comment_status
woocommerce_variation_set_stock
7. WP-CLI COMMANDS
6.1. Giới Thiệu
WP-CLI cho phép index từ command line - lý tưởng cho:
- Server operations
- Cron jobs
- CI/CD pipelines
- Large-scale indexing
6.2. Index Products
wp es index products
# Custom batch size (default: 100)
wp es index products --batch-size=500
# Continuous mode - process all batches until complete
wp es index products --batch-size=500 --continuous
# Force start (bỏ qua lock check)
wp es index products --force
# Combine options
wp es index products --batch-size=200 --continuous --force
--continuous flag:
- Không có flag (mặc định): Xử lý 1 batch rồi dừng → Thích hợp cho cron job gọi mỗi phút
- Có flag
--continuous: Xử lý tất cả batch cho đến hết → Thích hợp cho chạy manual một lần
6.3. Get Statistics
wp es stats
11. MÃ TRẠNG THÁI
10.1. Product Status Codes
| Code | Tên | Màu | Ý Nghĩa |
|---|---|---|---|
| 0 | Pending | 🔵 Xanh dương | Chờ đánh index |
| 1 | Success | 🟢 Xanh lá | Đã index thành công |
| 2 | Failed | 🔴 Đỏ | Index thất bại |
| 5 | Processing | 🟡 Vàng | Đang xử lý |
📝 CHANGELOG
Version 1.4.3 (08/02/2026) - LATEST!
🐛 Sửa Lỗi Nghiêm Trọng:
- 🔧 Fix 92 Products Infinite Loop Bug: Sửa lỗi 92 sản phẩm lặp vô hạn mỗi ngày
- Layer 1: Hook 15-16 (scheduled sales) thêm
get_post_type()validation - Layer 2:
es_sync_product()validate product tồn tại quaget_post() - Layer 3:
index_data()gọiremove_products_batch()khi empty post data - Root cause: Orphaned postmeta cho deleted products trigger scheduled sales hooks
- Layer 1: Hook 15-16 (scheduled sales) thêm
✨ Cải Tiến Error Handling:
- 🛡️ Index Mode Validation: Cải thiện validation và error messages
- Thay
showLockErrorWithForceStart()bằngshowNoti()+ state reset - Rút gọn error message: "Index mode must be %s (current: %s)"
- Thêm i18n support (English + Vietnamese)
- Validation hoàn toàn server-side
- Thay
🎨 Cải Tiến UI/UX:
- 📊 Progress Panel Improvements: Tối ưu hiển thị
- Lazy initialization: Chỉ tạo progress panel sau AJAX success đầu tiên
- Thêm loading overlay ngay khi bắt đầu indexing
- Fix positioning: Progress nằm giữa main buttons và Advanced Options
- Indexing Console luôn nằm dưới Progress Panel
- 🔘 Advanced Options Button States:
- Thêm
#reindex_all_productsvà#reindex_failed_productsvàodisableAllButtons() - Tất cả 7 buttons (5 main + 2 advanced) disable đồng thời khi indexing
- Advanced Options toggle không bị đẩy xuống
- Thêm
🌍 Đa Ngôn Ngữ:
- Thêm
indexModeMustBe: "Index mode must be %s (current: %s)" - Thêm mode labels: Ajax, CLI, Cron API
- Cập nhật
wp-es.pot,wp-es-vi_VN.po
📝 Files Modified:
hook.php- 3-layer validation for product syncprocess/product_pr.php- Cleanup invalid productsassets/js/admin.js- UI improvements & lazy initprocess/index.php- Shortened error messageslanguages/- Added i18n strings
Version 1.3.8 (08/01/2026)
⚡ Performance Optimization:
- 🚀 Cached Index Checking: Loại bỏ HEAD request chậm
- Thêm
check_index_exists()method trong PRODUCT_PR - Kiểm tra từ
get_indices_stats()raw_data đã load - Giảm thời gian load: 60s → <1s (98% faster)
- Thêm
- ⚡ Optimized get_status(): Không gọi ES API mỗi page load
- Trả về field
product_index_exists - Reuse cached data thay vì query lại
- Trả về field
- ✅ Smart Validation: index_data() kiểm tra mapping trước
- Ngăn indexing khi chưa có mapping
- Tránh lỗi "index not found"
🎨 UX Improvements:
- ✨ Instant UI Updates: JavaScript xóa warning ngay lập tức
- fadeOut() animation khi create mapping thành công
- Enable 7 buttons instantly (prepare, index, reset, delete, advanced...)
- Không reload page, chỉ AJAX refresh stats
- 🎯 Dynamic Notice Management: Xử lý cả template và dynamic notice
- Notice từ status-product.php template
- Notice tạo động trong JavaScript
- Smooth transitions với fadeOut()
🔧 Code Changes:
- 🔒 Strict Configuration: create_mapping() yêu cầu config
- Không còn default value 'wp_products'
- Báo lỗi nếu chưa có configuration
- 🧹 Code Cleanup: Xóa obsolete functions
- Removed:
has_mapping() - Removed:
set_mapping_status()
- Removed:
- 📦 Better Organization: Logic đúng chỗ
- CONFIG_PR::get_product_config()
- Removed JS to PHP data passing
🐛 Bug Fixes:
- Fixed: Warning notice vẫn hiển thị sau successful mapping
- Fixed: Dynamic notice không có ID để xóa
- Fixed: Page load 60s do HEAD request
📝 Files Modified:
process/product_pr.php- Added check_index_exists(), removed obsolete methodsadmin/product_ad.php- Uses product_index_exists fieldadmin/template-path/status-product.php- Added notice IDassets/js/admin.js- Instant UI updates, remove noticesprocess/config_pr.php- Added default config values
Version 1.3.7 (28/12/2025)
✨ New Features:
- 🔄 Auto Verify & Sync Process (VERIFY_PR Class): Tự động kiểm tra mỗi giờ
- Auto-detect missing products - Tìm sản phẩm bị thiếu trên ES
- Auto-detect extra products - Tìm sản phẩm thừa trên ES
- Auto-fix failed products - Xóa sản phẩm lỗi khỏi ES
- Comprehensive logging - Ghi log chi tiết tất cả hoạt động
- 📊 Database Logging System (LOG_PR Class): Lưu audit trail vĩnh viễn
- Ghi vào bảng
wp_es_logsthay vì console - Tên log có thể cấu hình để lọc
- Admin Log page hiển thị tất cả logs với search/filter
- Ghi vào bảng
- 🎯 Code Consolidation: Phương thức cha tập trung
is_index_enabled($type)- Kiểm tra index typeget_index_name($index_type)- Lấy tên index- Loại bỏ duplicate methods trong child classes
🔧 Improvements:
- Configuration-driven batch sizes - Đọc từ
max_rowsconfig - Logging system migration - Từ CONSOLE_PR sang LOG_PR
- Enhanced logging coverage - Ghi log tất cả verify operations
- Vietnamese translations - Đầy đủ dịch tiếng Việt
🐛 Bug Fixes:
- Fixed
ES_SETTINGundefined constant - Fixed
get_api()deprecated calls - Fixed
get_product_index_name()method call - Fixed product_db.php using
get_option()directly
📝 Technical Details:
- New
VERIFY_PRclass cho auto verify & sync - Enhanced
LOG_PRclass với database logging - Cron job chạy mỗi giờ:
es_cron_auto_verify_sync - Log categories: verify_sync, verify_delete_extra, verify_fix_failed
Version 1.3.5 (05/12/2025)
✨ New Features:
- 🎯 Product Configuration Section: Thêm phần cấu hình riêng cho Product
- Tag-based input cho Indexable Post Statuses (publish, draft, pending, private...)
- Auto-suggestion cho các WordPress post statuses phổ biến
- Section tự động hiện/ẩn theo checkbox Product
- 📦 CONFIG_DB Class: Class mới quản lý config tập trung
get_option_keys()- Lấy danh sách option keys của plugindelete_all_options()- Xóa tất cả options khi uninstallget/update_indexable_statuses()- Quản lý indexable statusesget/set/release_indexing_lock()- Quản lý indexing lock
- 🗑️ Uninstall Cleanup: Tự động xóa tất cả plugin options khi uninstall
es_setting,es_indexable_statuseses_logs_per_page,es_indexing_lock,es_stop_indexing
🔧 Improvements:
- Product count now respects configured indexable statuses
- Moved
get_indexable_statuses()to PRODUCT_DB class - Added i18n strings for Product Configuration section
🐛 Bug Fixes:
- Fixed product count mismatch - chỉ đếm products với configured statuses
- Fixed missing cleanup of plugin options on uninstall
Version 1.3.2 (01/12/2025)
✨ New Features:
- 📝 Log Admin Page Redesign: Complete UI overhaul matching Product Admin style
- 🗑️ Delete All Logs Confirmation: Custom showConfirm() popup dialog
🐛 Bug Fixes:
- Fixed HTML nested forms error in Log Admin
- Fixed Log Admin page not loading CSS/FontAwesome icons
- Fixed count_product() total calculation
Version 1.3.0 (28/11/2025)
🔥 Major Changes:
- 🚀 OPTIMIZED HOOKS: Giảm từ 32 hooks xuống 16 hooks không trùng lặp
- Loại bỏ các hooks redundant (edit_post, post_updated, woocommerce_new_product, etc.)
- Tăng hiệu năng, giảm overhead khi save product
- ✨ ES DELETE HANDLING: Xử lý xóa sản phẩm khỏi Elasticsearch
action='deleted'→ Xóa document khỏi ES (product bị xóa vĩnh viễn)action='trashed'→ Re-index với post_status='trash'- Priority system: 'deleted' action không bị override
- 🔄 AUTO RESET STUCK: Tự động reset cả index stuck và delete stuck
- Status 5 → Status 0 sau 5 phút
- Status 7 → Status 6 sau 5 phút
New Features:
- ✅
process_realtime_delete()- Xử lý xóa realtime qua ES API - ✅
mark_products_for_delete_batch()- Queue mode delete - ✅
mark_products_processing_delete()- Realtime mode delete - ✅ Separate tracking cho index vs delete operations
- ✅ Added
product_shipping_classtaxonomy support
Improvements:
- 🎯 Simplified
es_sync_product()function với Vietnamese comments - 🎯 Trigger merging khi cùng 1 product trigger nhiều hooks trong 1 request
- 🎯 Better logging với trigger count display
- 🎯 Variation stock changes now sync parent product
Status Codes Updated:
| Code | Name | Description |
|---|---|---|
| 0 | pending_index | Chờ đánh index |
| 1 | index_success | Index thành công |
| 2 | index_failed | Index thất bại |
| 5 | processing_index | Đang xử lý index |
| 6 | pending_delete | Chờ xóa khỏi ES |
| 7 | processing_delete | Đang xử lý xóa |
| 8 | delete_success | Xóa thành công |
| 9 | delete_failed | Xóa thất bại |
Version 1.2.1 (20/11/2025)
Improvements:
- 🚀 Simplified Analyzer Language - now defaults to English (removed from UI)
- 🌐 Full multilingual support for CLI commands using
__()function - 🎯 Removed
--max-batchesparameter from CLI (simplified usage) - 🔄 Added
--continuousflag for CLI: single batch for cron, continuous for manual - 🐛 Fixed continuous flag logic check in batch processing loop
- 📝 Updated CLI messages: "Logging to database" → "Saving logs to database"
- 🔧 Improved CLI command workflow for better cron job compatibility
Breaking Changes:
- ⚠️ Analyzer Language setting removed from Config UI (hardcoded to 'english')
- ⚠️
--max-batchesCLI parameter removed (use--continuousflag instead)
Version 1.2.0 (19/11/2025)
New Features:
- ✨ Console Monitor with real-time logs
- ✨ 18 WordPress hooks for auto-sync
- ✨ WP-CLI commands support
- ✨ Advanced mapping settings (shards, replicas, field limit)
- ✨ Analyzer language configuration
- ✨ Reindex all/failed products buttons
- ✨ Force clear lock mechanism
- ✨ Batch sync at shutdown hook
Improvements:
- 🚀 Optimized database queries
- 🚀 Better bulk indexing performance
- 🚀 Lock mechanism to prevent conflicts
- 🚀 Auto-reset stuck products (5 min)
- 🚀 Auto-cleanup old logs (7 days)
Bug Fixes:
- 🐛 Fixed nested mapping for taxonomies
- 🐛 Fixed memory issues with large batches
- 🐛 Fixed lock not releasing on error
- 🐛 Fixed console logs encoding
Developer:
- 🔧 Added 10+ action/filter hooks
- 🔧 Comprehensive hook documentation
- 🔧 Example code snippets
Version 1.1.9 (14/10/2025)
Initial release
📄 LICENSE
GPL-2.0 License
Copyright (C) 2025 Aboyit
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.