設定Elasticsearch服務
Elasticsearch是開放原始碼產品,可讓您從任何來源取得資料、任何格式,並即時搜尋和視覺化資料。
若為Adobe Commerce 2.4.4版或更新版本,請參閱設定OpenSearch服務。
- Elasticsearch會對產品目錄中的產品執行快速和進階搜尋
- Elasticsearch分析器支援多種語言
- 支援停用字和同義字
- 在重新索引操作完成之前,索引不會影響客戶
使用下列指示在Pro整合環境與入門環境(包括master
分支)上進行服務設定。
若要啟用Elasticsearch:
-
對於入門專案,將
elasticsearch
服務新增到Elasticsearch版本且已配置磁碟空間為MB的.magento/services.yaml
檔案。code language-yaml elasticsearch: type: elasticsearch:<version> disk: 1024
對於Pro專案,您必須提交Adobe Commerce支援票證以在預備和生產環境中變更Elasticsearch版本。
-
設定
.magento.app.yaml
檔案中的relationships
屬性。code language-yaml relationships: elasticsearch: "elasticsearch:elasticsearch"
-
新增、提交和推送程式碼變更。
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable Elasticsearch" && git push origin <branch-name>
如需這些變更如何影響您環境的詳細資訊,請參閱服務。
-
部署程式完成後,請使用SSH登入遠端環境。
code language-bash magento-cloud ssh
-
重新索引目錄搜尋索引。
code language-bash bin/magento indexer:reindex catalogsearch_fulltext
-
清除快取。
code language-bash bin/magento cache:clean
Elasticsearch軟體相容性
在雲端基礎結構專案上安裝或升級Adobe Commerce時,請務必檢查Adobe Commerce的Elasticsearch服務版本與ElasticsearchPHP使用者端之間的相容性。
-
首次安裝 — 確認
services.yaml
檔案中指定的Elasticsearch版本與為Adobe Commerce設定的ElasticsearchPHP使用者端相容。 -
專案升級 — 確認新應用程式版本中的ElasticsearchPHP使用者端與安裝在雲端基礎結構上的Elasticsearch服務版本相容。
雲端基礎結構上Adobe Commerce的服務版本和相容性支援取決於雲端基礎結構上部署的版本,有時與Adobe Commerce內部部署支援的版本不同。 請參閱服務版本。
若要檢查Elasticsearch軟體相容性:
-
在本機工作站上,變更至專案目錄。
-
顯示使用中環境的Elasticsearch詳細資訊。
code language-bash magento-cloud relationships --property=elasticsearch
-
或者,您可以使用SSH登入遠端環境。
code language-bash magento-cloud ssh
-
檢查
elasticsearch/elasticsearch
的Composer封裝版本。code language-bash composer show elasticsearch/elasticsearch
在回應中,檢查
versions
屬性中已安裝的版本。code language-none name : elasticsearch/elasticsearch descrip. : PHP Client for Elasticsearch keywords : client, elasticsearch, search versions : * v7.17.1 type : library license : Apache License 2.0 (Apache-2.0) (OSI approved) https://spdx.org/licenses/Apache-2.0.html#licenseText license : GNU Lesser General Public License v2.1 only (LGPL-2.1-only) (OSI approved) https://spdx.org/licenses/LGPL-2.1-only.html#licenseText homepage : source : [git] git@github.com:elastic/elasticsearch-php.git f1b8918f411b837ce5f6325e829a73518fd50367 dist : [zip] https://api.github.com/repos/elastic/elasticsearch-php/zipball/f1b8918f411b837ce5f6325e829a73518fd50367 f1b8918f411b837ce5f6325e829a73518fd50367 path : ~/vendor/elasticsearch/elasticsearch names : elasticsearch/elasticsearch
您也可以在環境根目錄的
composer.lock
檔案中找到ElasticsearchPHP使用者端版本。 -
從命令列擷取Elasticsearch服務連線詳細資料。
code language-bash vendor/bin/ece-tools env:config:show services
在回應中,尋找Elasticsearch服務端點的IP位址:
code language-none | elasticsearch: | +------------------------------------------+----------------------------------------------------------------------+ | username | null | | scheme | http | | service | elasticsearch | | fragment | null | | ip | 169.254.220.11 | | hostname | dzggu33f75wi3sd24lgwtoupxm.elasticsearch.service._.magentosite.cloud | | public | false | | cluster | fo3qdoxtla4j4-master-7rqtwti | | host | elasticsearch.internal | | rel | elasticsearch | | query | | | path | null | | password | null | | type | elasticsearch:6.5 | | port | 9200 | +------------------------------------------+----------------------------------------------------------------------+
-
從服務端點擷取已安裝的Elasticsearch服務
version:number
。code language-bash curl -XGET <elasticsearch-service-endpoint-ip-address>:9200/
code language-json { "name" : "-AqGi9D", "cluster_name" : "elasticsearch", "cluster_uuid" : "_yze6-ywSEW1MaAF8ZPWyQ", "version" : { "number" : "6.5.4", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "82a8aa7", "build_date" : "2019-01-23T12:07:18.760675Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, " tagline" : "You Know, for Search" }
-
檢查Elasticsearch服務和PHP使用者端之間的版本相容性。
如果版本不相容,請對您的環境設定進行下列其中一項更新:
-
將ElasticsearchPHP使用者端變更為與Elasticsearch服務版本相容的版本。
code language-bash composer require "elasticsearch/elasticsearch:~<version>"
-
將
services.yaml
檔案中的Elasticsearch服務版本變更為與ElasticsearchPHP使用者端相容的版本。
-
.magento.app.yaml
和services.yaml
檔案,並在票證中說明PHP版本。 如需自行變更PHP版本、擴充功能或環境設定,請參閱_應用程式組態_中的PHP設定。重新啟動Elasticsearch服務
如果您需要重新啟動Elasticsearch服務,必須聯絡Adobe Commerce支援。
其他搜尋設定
-
根據預設,雲端環境的搜尋設定會在您每次部署時重新產生。 您可以使用
SEARCH_CONFIGURATION
部署變數,在部署之間保留自訂搜尋設定。 請參閱部署變數。 -
在您為專案設定Elasticsearch服務後,請使用管理員UI來測試Elasticsearch連線並自訂Adobe Commerce的Elasticsearch設定。
新增Elasticsearch的外掛程式
您可以選擇將configuration:plugins
區段新增至.magento/services.yaml
檔案中的Elasticsearch服務,以新增外掛程式以進行Elasticsearch。 例如,下列程式碼會啟用ICU分析和注音分析外掛程式。
elasticsearch:
type: elasticsearch:<service-version>
disk: 1024
configuration:
plugins:
- analysis-icu
- analysis-phonetic
如果您使用Elastic Suite協力廠商外掛程式,您必須將ece-tools
套件更新至2002.0.19或更新版本。
設定Elastic Suite時,請將組態設定新增至ELASTICSUITE_CONFIGURATION
部署變數。 此設定可跨部署儲存設定。
移除Elasticsearch的外掛程式
從.magento/services.yaml
中的elasticsearch:
移除外掛程式專案,並不會如您預期解除安裝或停用它們。 您必須重新索引Elasticsearch資料。 此行為旨在防止依賴這些外掛程式的資料可能遺失或損毀。
若要移除Elasticsearch外掛程式:
-
從您的
.magento/services.yaml
檔案中移除Elasticsearch外掛程式專案。 -
新增、提交和推送您的程式碼變更。
code language-bash git add .magento/services.yaml
code language-bash git commit -m "Remove Elasticsearch plugin"
code language-bash git push origin <branch-name>
-
將
.magento/services.yaml
變更提交至您的雲端存放庫。 -
重新索引目錄搜尋索引。
code language-bash bin/magento indexer:reindex catalogsearch_fulltext
-
清除快取。
code language-bash bin/magento cache:clean
疑難排解
請參閱下列Adobe Commerce支援文章,以取得疑難排解Elasticsearch問題的說明:
- 已設定Elasticsearch5,但搜尋頁面未載入,並顯示「Fielddata已停用……」錯誤
- 使用Elasticsearch6.x時,目錄分頁無法運作
- Adobe Commerce疑難排解員中的Elasticsearch
- Elasticsearch索引狀態為
yellow
或red