前情提要
隨著查詢範圍的擴大和資料量的增長,以往使用完全相符、以...開頭、以...結尾 又或者包含...關鍵字等做法已經無法精確且有效率地的找出期望的結果。因此,建立一個現代化的搜尋解決方案勢在必行。
經過內部討論後,我們決定採用 OpenSearch 實作,主要原因如下:
- 開源:自從 2021 年
Elasticsearch變更軟體授權策略,亞馬遜雲端服務決定 從Elasticsearch和Kibana最後一個ALv2版本建立和維護一個分支。 - 支援多元的搜尋功能:如 K-Nearest Neighbor (KNN) 搜尋、SQL、異常偵測、機器學習共用、追蹤分析、全文搜尋等。
安裝 OpenSearch
解壓縮從官網下載下來的 .zip 檔後,打開 Powershell:
bash
# 移動至目標資料夾
cd \path\to\opensearch
# OpenSearch 2.12 之後的版本需要指定預設的管理員密碼
set OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password>
# 或使用
$Env:OPENSEARCH_INITIAL_ADMIN_PASSWORD="<custom-admin-password>"
# 執行安裝檔
.\opensearch-windows-install.bat
# 測試有沒有裝成功
curl.exe -X GET https://localhost:9200 -u "admin:<custom-admin-password>" --insecure設定環境並註冊服務
- 打開
opensearch\config內的opensearch.yml並加上以下內容
yaml
# Bind OpenSearch to the correct network interface. Use 0.0.0.0
# to include all available interfaces or specify an IP address
# assigned to a specific interface.
network.host: 0.0.0.0
# Unless you have already configured a cluster, you should set
# discovery.type to single-node, or the bootstrap checks will
# fail when you try to start the service.
discovery.type: single-node
# If you previously disabled the Security plugin in opensearch.yml,
# be sure to re-enable it. Otherwise you can skip this setting.
plugins.security.disabled: false- 打開同樣在
opensearch\config內的jvm.options根據電腦資訊調整(這邊以 16GB RAM 的配置為例)
-Xms8g
-Xmx8g編輯系統環境變數,建立一個名稱為
JAVA_HOME,值為\path\to\opensearch\jdk的系統/使用者變數(如果系統原本有設定相容的 jdk 在JAVA_HOME變數可以沿用)註冊 OpenSearch 為 Windows 服務
.\bin\opensearch-service.bat install你會看到
The service 'opensearch-service-x64' has been installed.- 啟動服務
.\bin\opensearch-service.bat start然後到服務設定啟動類型為自動
- 在瀏覽器輸入以下網址檢測是否安裝成功
https://localhost:9200/_cat/indices?v