本文列舉了Elasticsearch(ES)相關的常見問題,包括購買、退訂、配置、訪問、查詢、寫入、外掛程式、分詞、日誌、重啟、負載或狀態異常、備份與恢複、監控警示等相關問題。
常見問題概覽
購買或退訂執行個體問題
產品功能諮詢問題
資料移轉與同步問題
重啟執行個體問題
叢集負載或狀態異常問題
叢集查詢與寫入問題
叢集配置與變更問題
外掛程式、分詞、同義字問題
日誌問題
資料備份與恢複問題
叢集監控警示問題
訪問叢集問題
購買或退訂執行個體問題
購買ES執行個體時選錯配置,如何處理?
當您購買ES執行個體後,發現所選的配置不符合預期時,可以參考下表,匹配您的配置資訊,選擇合適的解決方案。
在下表解決方案中,如果涉及到退訂,請在退訂前先備份資料(手動備份與恢複)。退訂後資料會被清除,無法恢複。
配置 | 解決方案 |
付費模式 | 如果您購買的是隨用隨付的執行個體,可轉換為訂用帳戶,詳情請參見隨用隨付轉訂用帳戶。 |
版本 | 執行個體需要滿足以下任意一種情況,才支援進行版本變更:
執行個體版本升級,詳情請參見升級版本。不滿足上述情況的版本變更,建議退訂後重新購買。 |
地區 | 不支援變更,建議退訂後重新購買。 |
可用性區域 | 可遷移可用性區域,詳情請參見遷移可用性區域節點。 說明 在遷移可用性區域時,請確保ES執行個體已建立成功,即執行個體狀態為正常。 |
可用性區域數量 | 不支援變更,建議退訂後重新購買。 |
執行個體規格 | 支援變更,詳情請參見升配叢集。 |
儲存類型 | 支援變更,詳情請參見升配叢集。 |
雲端硬碟加密 | 不支援變更,建議退訂後重新購買。 |
單節點儲存空間 | 支援變更,詳情請參見升配叢集。 |
資料節點數量 | 支援變更,詳情請參見升配叢集。 |
網路類型、專用網路、虛擬交換器 | 不支援變更,建議退訂後重新購買。 說明 目前只支援專用網路。 |
登入名稱 | 預設的管理員帳號為elastic,不支援更改。您也可以在Kibana中建立使用者,並為該使用者授予對應的許可權,詳情請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控。 |
登入密碼 | 支援變更,詳情請參見重設執行個體訪問密碼。 |
ES購買頁的版本具體對應的是哪個版本?
購買頁版本 | 具體版本 |
8.15 | 8.15.1 |
8.13 | 8.13.4 |
8.9 | 8.9.1 |
8.5 | 8.5.1 |
7.16 | 7.16.2 |
7.10 | 7.10.0 |
7.7 | 7.7.1 |
6.8 | 6.8.6 |
6.7 | 6.7.0 |
6.3 | 6.3.2 |
5.6 | 5.6.16 |
5.5 | 5.5.3 |
購買時,如果您已擁有自建叢集,建議您選擇相近的版本,比如小版本相近;如果沒有自建叢集,建議您選擇最新版本。
購買ES執行個體時,專用網路為空白,如何處理?
請參見查看RAM使用者資訊,檢查是否已經為RAM使用者授予了擷取Virtual Private Cloud(Virtual Private Cloud)列表的許可權。如果沒有授權,請參見建立自訂權限原則,為RAM使用者授權。
購買ES執行個體時,已擁有對應的專用網路,但無法選擇虛擬交換器或虛擬交換器為空白,報錯vSwitch: may not be empty,如何解決?
此報錯是由於您選擇的可用性區域下沒有可用的虛擬交換器。需要回到購買頁的叢集配置頁面,查看所選的可用性區域,同時進入專用網路控制台下的交換器頁面,確認對應可用性區域下是否有可用的交換器。如果沒有需要建立,建立方式請參見搭建IPv4專用網路。
已購買的執行個體退訂後重新購買,執行個體的訪問地址會變嗎?
會變化。建議您購買新執行個體後,先修改對應的用戶端代碼,再退訂舊執行個體,保證業務不間斷。
如何釋放或退訂ES執行個體?
我可以購買單機版的ES執行個體嗎?
不支援,購買時至少需要選擇兩個資料節點,詳情請參見購買頁面參數。
購買執行個體時,資源已經售罄怎麼辦?
如果在建立執行個體時遇到資源售罄的情況,建議您採取以下措施:
更換地區
更換可用性區域
更換資源配置
如果調整需求後仍然沒有資源,建議您等待一段時間再購買。執行個體資源是動態,如果資源不足,阿里雲會儘快補充資源,但是需要一定時間。
為什麼建議還在使用存量1核2 GiB規格的使用者儘快升級規格?
受規格庫存及效能穩定性影響,自2021年5月起,Elasticsearch不再提供1核2 GiB規格的資料節點的新購,存量節點使用不受影響。1核2 GiB規格執行個體只適合於學習情境,不適用於生產環境,根據產品SLA協議不在售後保障範圍內。建議您儘快將1核2 GiB規格升級至高規格,詳情請參見升配叢集。
購買ES後一直在建立中,如何處理?
執行個體建立後,需要一段時間才會生效。時間長短與您的叢集規格、資料結構和大小等相關,一般在小時層級。
ES叢集建立完成後,還需要單獨購買Kibana嗎?
購買ES叢集時,Kibana節點預設為啟用狀態,不可更改。您可以根據需求選擇Kibana節點的規格,具體操作請參見建立Elasticsearch執行個體。
受規格效能及穩定性影響,推薦購買2核4 GiB及以上規格的Kibana節點;1核2 GiB規格的Kibana節點免費贈送,但僅建議在測試情境中使用。
為什麼找不到已建立的執行個體?
請您檢查下所選地區是否正確,建議您在ES控制台上方選擇地區處查看。 如果地區正常,ES執行個體仍然找不到,建議您清除瀏覽器緩衝或更換本網環境進行嘗試。
購買ES執行個體時,什麼情況下需要購買專有主節點和協調節點?
專有主節點的主要功能是對叢集進行操作,例如建立或刪除索引,跟蹤哪些節點是叢集的一部分,並決定哪些分區分配給相關的節點。穩定的主節點對叢集的健康非常重要,建議在以下情境下購買獨立的專有主節點:
叢集中承擔主節點角色的資料節點壓力比較大的情境。
寫入情境下。
對叢集的穩定性要求較高的情境。
協調節點主要承擔所有的查詢和寫入請求,為資料節點做請求轉寄,同時merge資料節點的查詢結果,一般agg情境建議購買獨立的協調節點。一般建議按數量1:5添加獨立的協調節點(1協調對應5個資料節點,最少2個),規格建議和資料節點保持一致。更詳細的規格容量評估方案,請參見規格容量評估。
購買ES執行個體時,輸入密碼的預設帳號是什嗎?
預設帳號是elastic。您也可以建立自訂帳號,具體操作請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控。
產品功能諮詢問題
阿里雲ES支援版本升級或降級嗎?
僅部分版本(5.5升級5.6版本、5.6升級6.3版本、6.3升級6.7版本)支援直接升級版本。
如果您有其他版本間的升級需求或降版本需求,請先購買目標版本ES執行個體,再將原執行個體中的資料移轉至目標執行個體中,最後退訂或釋放原執行個體,間接完成版本升級或降級。
阿里雲ES免費試用執行個體僅支援8.5、8.9版本,且建立後不許用修改。
直接升級版本,請參見升級版本。
建立新ES執行個體,請參見建立阿里雲ES執行個體。
阿里雲ES執行個體間資料移轉,請參見阿里雲ES執行個體間資料移轉方案選取指南。
ES支援通過SSH登入叢集修改配置嗎?
不支援。為確保安全性,ES不支援通過SSH登入叢集。如果您需要修改叢集配置,可通過ES的叢集配置功能實現,詳情請參見叢集配置概述。
6.7版本的Logstash和6.3版本的ES能夠相容嗎?
可以相容。更多相容性說明請參見產品相容性。
Quick BI支援ES資料來源嗎?
不支援。您可以通過Kibana進行資料分析與展示。
ES支援評分外掛程式嗎?
ES支援通過索引建立分詞器進行資料搜尋,同時也支援評分排序,詳情請參見步驟五:搜尋資料。
ES支援LDAP功能嗎?
ES產品側支援LDAP功能。如果您需要使用LDAP協議對接ES進行認證,需要先在本地搭建對應ES版本叢集環境進行測試,測試沒問題後再在ES控制台配置對應的模板,詳情請參見X-Pack整合LDAP認證最佳實務。
ES有Java SDK嗎?
有的,不同的ES版本對應不同的SDK,具體使用方式請參見Java API。
ES執行個體的核心版本在哪裡查看?
ES在使用過程中,什麼情況下可以使用強制重啟功能,使用該功能後會有什麼影響?
如果執行個體狀態顯示為非正常狀態(黃色或紅色),則不支援重啟操作。此時,您需要對執行個體進行強制重啟。使用該功能,可能會導致服務在重啟階段不穩定、資料丟失或者讀寫資料失敗等,請謹慎操作。
如何確認ES的Log4j2漏洞已修複?
叢集重啟成功即可完成漏洞修複,詳細資料請參見【漏洞預警】Apache Log4j2遠程代碼執行漏洞。
修複Log4j2漏洞需要升級ES版本嗎?
不需要,直接按照修複流程操作即可。
如何?跨地區ES執行個體內網互連?
您可以通過以下兩種方式實現跨地區ES執行個體內網互連:
VPC對等串連方式,詳細資料請參見使用VPC對等串連實現VPC私網互連。
雲企業網方式,詳細資料請參見使用雲企業網實現跨地區網路執行個體互連。
如何在Elasticsearch叢集間遷移資料?
不同的遷移情境(Elasticsearch間遷移、自建Elasticsearch遷移至阿里雲、第三方Elasticsearch遷移至阿里雲等)需要使用不同的遷移方案和工具,詳細資料請參見遷移方案選取指南。
開啟HTTPS協議是否需要購買協調節點?
以下ES版本開啟HTTPS時不需要購買協調節點,且已購買的協調節點可以關閉。
7.16及以上版本。
除上述版本外,其他ES版本開啟HTTPS時必須開啟協調節點,且協調節點購買後不支援退訂和關閉。
為了提高安全性,在開啟HTTPS後,Elasticsearch會定期維護並更新所依賴的認證。因低版本(7.10及以下)暫不支援熱更新安裝在資料節點上的認證,為了降低更新認證時重啟節點對線上業務的影響,Elasticsearch會將認證部署在負責轉寄請求的協調節點上。如果您還未購買協調節點,在開啟HTTPS協議前,系統會提示您購買協調節點,請按照提示購買協調節點後再進行操作,詳細資料請參見使用HTTPS協議。
ES單節點最大支援多少分區?
ES 7.x版本最大支援1000個分區,其他版本無限制。您需要根據叢集規格,合理設定單個資料節點的shard數,詳細資料請參見規格容量評估和Size your shards。
您可以使用如下命令,通過max_shards_per_node參數,臨時修改叢集的最大分區數:
PUT /_cluster/settings
{
"transient": {
"cluster": {
"max_shards_per_node":10000
}
}
}
作為長期解決方案不建議將該參數值設定過大。建議您增加節點數或減少叢集的分區數,對shard進行合理規劃,避免叢集壓力過大導致叢集穩定性問題。
以.monitoring-es開頭的索引是怎麼產生的?作用是什嗎?
預設情況下,X-Pack監控用戶端會每隔10s採集一次叢集的監控資訊,並儲存到對應Elasticsearch執行個體的以.monitoring-*為首碼的索引中。以6.x版本執行個體為例,主要有.monitoring-es-6-*和.monitoring-kibana-6-*這兩種索引,以天為單位滾動建立。採集完的資訊會儲存在以.monitoring-es-6-為首碼,以當前日期為尾碼的索引中。
其中.monitoring-es-6-*索引佔用磁碟空間較大,主要存放了叢集狀態、叢集統計、節點統計、索引統計等資訊,更多詳細資料請參見配置Monitoring監控日誌。
ES資料盤開啟雲端硬碟加密,使用的密碼編譯演算法是什麼?
ES的雲端硬碟加密採用行業標準的AES-256密碼編譯演算法,利用Key Management Service(Key Management Service)加密雲端硬碟,詳細資料請參見加密雲端硬碟。
阿里雲ES服務是否支援9300連接埠?
僅阿里雲ES 5.x版本同時支援9300連接埠(基於TCP)和9200連接埠(基於HTTP或HTTPS),其他版本只支援9200連接埠。
阿里雲ES 6.0及以上版本的執行個體,不支援通過Transport Client訪問9300連接埠。如果您要訪問9300連接埠,需要購買5.x版本的執行個體。
資料移轉與同步問題
如何將MongoDB資料同步至阿里雲ES?
您可以通過Monstache將MongoDB資料即時同步至Elasticsearch,具體操作請參見通過Monstache即時同步MongoDB資料至Elasticsearch。
重啟執行個體問題
重啟ES執行個體或節點需要多久?
在重啟ES執行個體或節點時,頁面上會顯示預估時間,這個時間是根據您的叢集規格、資料結構和大小等進行評估的。重啟執行個體耗時較長,一般在小時層級,詳情請參見重啟執行個體或節點。
開啟或關閉ES執行個體的公網訪問時,會觸發執行個體重啟嗎?
不會。但是會有短暫的生效狀態變更,不影響正常使用。
修改叢集訪問密碼,會觸發叢集重啟嗎?
不會。密碼變更只會觸發叢集重新載入,不會觸發重啟,詳細資料請參見重設執行個體訪問密碼。
索引沒有副本,是否會影響叢集重啟?
會影響,可能會導致重啟過程中無法對外持續提供服務。如果叢集整體負載不高且索引存在副本分區,一般情況下重啟過程中可對外持續提供服務。但在某些情境下,重啟過程中可能會出現訪問逾時,例如強制重啟並發度高、叢集負載很高並且已經存在叢集訪問停用情況、沒有副本分區、在重啟或強制重啟過程中存在大量的寫入和查詢等情境,建議重啟前先在用戶端設計好重試機制並且在業務低峰期進行操作。
如何重啟角色節點(例如Kibana節點)或單個節點?
重啟角色節點
在執行個體的基本資料頁面單擊重啟,選擇操作類型為角色節點重啟,並選擇對應的角色節點,即可對該角色節點進行重啟。具體操作請參見重啟執行個體或節點。
重啟單個節點
您可以通過以下兩種方式重啟單個節點:
在執行個體的基本資料頁面單擊重啟,選擇操作類型為節點重啟,並選擇對應的節點,即可對該節點進行重啟。具體操作請參見重啟執行個體或節點。
在執行個體的基本資料頁面下方的節點可視化地區中,將滑鼠移動到對應節點上,在彈出框中單擊重啟即可。具體操作請參見查看叢集狀態和節點資訊。
重啟執行個體卡住了怎麼辦?
建議您先在工作清單中查看執行個體變更任務詳情(除7.16版本外,其他版本執行個體的重啟時間都在小時層級),具體操作請參見查看執行個體任務進度。如果存在變更進度長時間無變化的情況,可參考以下說明排查解決。
可能原因 | 解決方案 |
外掛程式問題導致節點無法啟動 | 刪除對應外掛程式。 |
磁碟使用率太高導致shard無法分配 說明 您可以通過叢集監控查看叢集的磁碟使用率,詳細資料請參見指標含義與異常處理建議。 | 刪除索引或者將索引複本數暫時設定為0。 |
叢集參數設定問題導致shard無法分配 | 通過 |
副本數大於節點數 | 重新設定副本數。 |
叢集規格過小,出現OOM(Out Of Memory) | 升配叢集。 |
ES執行個體能設定定期重啟節點嗎?
目前不支援定期重啟節點。如果您有該需求,可以嘗試使用API(RestartInstance)的方式,但是需要您自己寫定時任務和配置對應的節點資訊。
叢集負載或狀態異常問題
使用ES執行個體時,一部分節點的CPU和負載正常,另一部分處於空閑狀態,如何處理?
此現象是叢集負載不均問題引起的。導致阿里雲ES叢集負載不均問題的原因很多,目前主要包括shard設定不合理、segment大小不均、冷熱資料需求、負載平衡及多可用性區域架構部署的長串連不釋放等。請根據具體現象進行排查,詳情請參見叢集負載不均問題的分析方法及解決方案。
在排查問題前,請先查看您的叢集規格,如果為1核2 GiB(學習規格),請先將規格升配至2核4 GiB或以上,詳情請參見升配叢集。
1核2 GiB規格執行個體只適合於學習情境,不適用於生產環境,根據產品SLA協議不在售後保障範圍內。由於該規格執行個體穩定性較弱,產品已不再支援購買。建議您儘快將1核2 GiB規格升級至高規格。
2核4 GiB規格執行個體建議在測試環境中使用,生產環境建議您使用更高規格。
ES叢集狀態yellow,如何處理?
問題原因
當您設定的索引複本數大於當前節點數減1時,會導致叢集處於yellow狀態。
解決方案
通過
GET _cat/indices?v
命令查看索引分區的分布情況,定位yellow狀態的索引,並將其副本分區數設定為0。等待叢集恢複正常後,再將對應索引的副本分區數設定為原來的值。警告將副本分區數設定為0後,當節點掉線時,可能會導致資料丟失,請謹慎操作。待叢集恢複正常後(大約1分鐘),請儘快將副本分區數恢複到原來的值。
PUT test/_settings { "index" : { "number_of_replicas":"0" } }
ES叢集負載高導致狀態red,如何處理?
主分區所在的節點異常會導致叢集red。您可以通過GET /_cat/indices?v命令查看索引分區的分布情況,定位到red索引,並按照以下常見原因和解決方案排查解決。
常見原因 | 解決方案 |
負載不均導致叢集資源不足。 | 建議您最佳化分區負載,調整主+副分區為叢集資料節點的整數倍,詳細資料請參見shard分配不均,如何調整?。 |
叢集中包含無用的索引資料。 | 建議定時清理無用的索引資料,尤其是以.monitor開頭的索引監控資料,具體操作請參見配置Monitoring監控日誌。 |
分區未分配。 | 通過 |
緩衝導致資源佔用。 | 建議使用 |
在進行升配等叢集變更操作。 | 建議中斷當前變更,在升配頁面選擇強制變更,具體操作請參見升配叢集。 |
執行個體規格較低資源不足,例如1核2 GiB、2核4 GiB等規格。 | 建議升配叢集,具體操作請參見升配叢集。 說明
|
磁碟水位超過85% | 建議刪除不需要的歷史資料或擴磁碟,詳細資料請參見叢集磁碟使用率過高和read_only問題的排查與處理方法。 |
通過監控查看到或收到叢集警示,叢集CPU佔比過高,如何處理?
常見的問題原因及對應的解決方案如下。
常見原因 | 解決方案 |
寫入或查詢QPS增加導致CPU增加。 | 降低並發寫入量、降低寫入查詢QPS或擴容叢集規格,建議您結合生產環境進行壓測,選擇合適的規格。 |
索引緩衝佔用資源。 | 建議使用 |
叢集規格太低。 | 建議升配叢集,具體操作請參見升配叢集。 |
單節點CPU高,負載不均。 | 最佳化分區負載,設定主+副分區為叢集資料節點的整數倍,詳細資料請參見shard分配不均,如何調整?。 |
ES磁碟使用率過高,如何處理?
建議您使用DELETE /索引名
命令刪除無用索引,待磁碟使用率降到75%以下時,再在控制台強制升級叢集磁碟和規格容量,具體操作請參見升配叢集。當單節點的磁碟使用率過高時,您還需要最佳化分區,詳細資料請參見shard分配不均,如何調整?。
為避免磁碟使用率過高影響Elasticsearch服務,建議開啟磁碟使用率監控警示,及時查收警示簡訊,提前做好防禦措施,具體操作請參見指標含義與異常處理建議。磁碟使用率超過的比例不同,對叢集產生的影響不同,具體說明如下:
超過85%:導致新的分區無法分配。
超過90%:ES會嘗試將對應節點中的分區遷移到其他磁碟使用率比較低的資料節點中。
超過95%:系統會對Elasticsearch叢集中的每個索引強制設定read_only_allow_delete屬性,此時索引將無法寫入資料,只能讀取和刪除對應索引。
通過監控查看到或收到叢集警示,ES記憶體佔比過高,如何處理?
常見的問題原因及對應的解決方案如下。
常見原因 | 解決方案 |
叢集緩衝佔用記憶體。 | 短期內可以通過 |
查詢寫入過高。 | 建議停止讀寫後安裝限流外掛程式,並開啟叢集限流,具體操作請參見使用叢集限流外掛程式(aliyun-qos)。 |
無用索引佔用記憶體。 | 刪除無用的索引釋放資源,尤其是以.monitoring-*為首碼的監控索引,可設定其保留周期,具體操作請參見配置Monitoring監控日誌。 |
單節點記憶體高,分區不均。 | 最佳化分區負載,設定主+副分區為叢集資料節點的整數倍,詳細資料請參見shard分配不均,如何調整?。 |
異常查詢,例如業務側觸發的一串長特殊字元。 | 通過 |
shard分配不均,如何調整?
建議重新分配併合理規劃shard,確保主shard數與副shard數之和是叢集資料節點的整數倍,讓資料均攤到每個資料節點上,避免負載不均導致單個節點負載過大。主副shard數的分配樣本如下:
假如當前叢集的資料節點數為3個,那麼您可以設定主分區3個,副本分區為1份,即分區之和為6個。
假如當前叢集的資料節點數為8個,那麼您可以設定主分區4個,副本分區為1份,即分區之和為8個;或主分區8個,副本分區為1份,即分區之和為16個。
調整分區後需要對原有資料生效,在業務低峰期對索引reindex。副本分區越多,叢集的可用性和查詢效能會更好,同時也會佔用更多記憶體空間。
shard大小和數量是影響Elasticsearch叢集穩定性和效能的重要因素之一。Elasticsearch叢集中任何一個索引都需要有一個合理的shard規劃。合理的shard規劃能夠防止因業務不明確,導致分區龐大消耗Elasticsearch本身效能的問題。shard規劃建議請參見評估Shard。
shard分配不均會導致叢集負載不均,您可以通過以下方式查看叢集是否存在shard分配不均:
指標含義與異常處理建議,如果某個節點的CPU、記憶體、磁碟等負載較高,說明shard分配不均。
使用
GET _cat/shards?v
命令,查看索引的shard資訊。如果索引的shard在負載高的節點上呈現的數量較多,說明shard分配不均。
叢集負載高,且主日誌報錯:java.lang.StackOverflowError for the entire cluster,如何處理?
主日誌報錯:java.lang.StackOverflowError for the entire cluster,表示Lucene堆疊溢位,與正則和模糊查詢相關,目前Elasticsearch 6.0及以上版本已修複。建議您儘快升級叢集版本,或者最佳化查詢語句,詳細資料請參見java.lang.StackOverflowError for the entire cluster。
如何查詢JVM配置實際分配了多少記憶體?
可通過GET _nodes/stats/jvm?pretty
命令查看,預設為叢集記憶體的一半,不支援修改。
叢集查詢與寫入問題
如何調整隊列大小?
可以通過在YML參數配置中,指定thread_pool.write.queue_size參數的大小來調整隊列大小,具體操作請參見配置YML參數。在調整前,您可以通過GET /_cat/thread_pool?v
命令查看隊列使用方式。
對於6.0以下版本的Elasticsearch叢集,需要使用thread_pool.index.queue_size參數。
如何查詢或匯出指定時間段內的資料?
您可以通過Elasticsearch中的range查詢實現查詢指定時間段內的資料,詳細資料請參見Range query。
如果要匯出指定時間段內的資料,可以通過Logstash進行過濾,詳細資料請參見Logstash設定檔說明。
ES使用批量插入操作是否有數量限制?
Bulk預設設定批量提交的資料量不能超過100 MB。如果超過該限制,您可以調整寫入資料量。每次寫入請求的資料量=文檔數量*單個文檔的大小。僅憑文檔數量可能無法準確評估寫入資料量的大小,它取決於您每個文檔的大小及複雜性。如果您的單個文檔資料量很大,可以適當減少文檔數量。一般建議每次寫入請求的資料量從5 MB~15 MB開始調試,預設不能超過100 MB(詳細資料請參見HTTP settings)。具體調試方案,請參見官方使用和調試批量請求文檔。
Elasticsearch查詢結果與實際存在時間差,如何處理?
Elasticsearch預設是UTC時間(世界標準時間),和實際時間會存在時間差。Elasticsearch本身不支援調整時區,您可根據時區差進行轉換,例如UTC時間比北京時間晚8小時(Elasticsearch儲存的時間要比實際的時間晚8小時),可通過以下方式轉換:
查詢日期類型資料時,帶上time_zone或者時間戳記方式儲存時間,詳細資料請參見Parameters for <field>。
寫入時間資料時指定時區,例如
"time" : "2022-07-15T12:58:17.136+0800"
(東八區時間)。使用Kibana展示資料。Kibana從Elasticsearch中擷取到date類型的欄位後,會通過JS擷取本機或本地時區,並將時間欄位從Elasticsearch的UTC時間轉換為瀏覽器所在時區後展示出來,詳細資料請參見如何調整Kibana可視化展示資料的時區?。
如果是Logstash同步資料,導致同步前後資料的時區相差8小時的情境,需要手動在管道配置中增加對應的時間,參考解決方案樣本:
filter{ ruby{ code => "event.set('update_time', event.get('update_time').time.localtime + 8*60*60)" } }
。
ES叢集查詢較長時間後返回結果,或不返回結果,如何處理?
長時間後返回結果,或不返回結果為慢查詢。您可以通過控制台慢查詢日誌查看慢日誌,結合指標含義與異常處理建議定位原因。常見原因及對應的解決方案如下。
常見原因 | 解決方案 |
叢集分區負載不均。 | 建議您最佳化分區負載,調整主+副分區為叢集資料節點的整數倍,詳細資料請參見shard分配不均,如何調整?。 |
叢集資源不足。 | 如果存在agg、term、指令碼和模糊查詢等消耗效能較大的操作,建議您最佳化操作命令或者升配叢集。升配叢集的具體操作請參見升配叢集。 說明 Elasticsearch叢集查詢效能與叢集的健康情況有關。記憶體使用量率低於80%,節點負載平衡的情況下查詢效能較好。 |
叢集寫入報錯Data too large... which is larger than the limit of,如何處理?
問題原因
寫入過高,觸發熔斷,叢集資源無法滿足目前大量的寫入。
解決方案
重要如果以下操作無法執行,需要先停止所有查詢和寫入,然後強制重啟叢集,待叢集恢複正常狀態後再操作。
執行
POST /索引名/_cache/clear?fielddata=true
命令,清理索引緩衝。如果無法解決,繼續執行以下步驟。執行
GET /_cat/indices?v
命令,查看叢集中是否存在shard分配不均的問題,詳細說明及調整方法請參見shard分配不均,如何調整?。如果無法解決,繼續執行以下步驟。降低並發寫入量,刪除無用的索引釋放資源,減少Kibana monitoring的使用。
關閉Kibana monitoring執行以下命令:
PUT _cluster / settings { "persistent": { "xpack.monitoring.collection.enabled": false } }
如果無法解決,繼續執行以下步驟。
通過升配叢集擴容叢集規格。
ES支援大量刪除索引嗎?
支援。需要配置YML參數,將刪除索引指定名稱設定為刪除或關閉時索引名稱支援萬用字元,重啟成功後就可以使用萬用字元大量刪除索引。具體操作請參見配置YML參數。
索引刪除後不可恢複,請謹慎使用此配置。
建立索引時會偶現索引UUID衝突報錯(index uuid conflicted ),索引文檔寫不進去,怎麼辦?
已知問題,需要將執行個體的核心版本升級到1.5.0及以上版本,具體操作請參見升級版本。
如何修改index.max_result_window(分頁查詢時查詢的最大文檔數量)?
ES預設的index.max_result_window(分頁查詢時查詢的最大文檔數量)參數值為10000(from+size),查詢時超過該值將報錯Result window is too large, from + size must be less than or equal to: [10000]
。
個別深分頁搜尋情境可能需要擴大該參數值。可以根據具體需求,執行如下命令修改index.max_result_window的值(樣本中的值僅供參考)。命令執行後,再重啟ES叢集時,該配置不會失效。
PUT /my_index/_settings
{
"index": {
"max_result_window": 50000
}
}
當查詢召回結果過多,不推薦使用from+size做深分頁,否則會消耗大量的CPU和記憶體資源。深度分頁情境建議使用scroll或search after。
ES更新資料時報錯:Rejecting mapping update to [] as the final mapping would have more than 1 type,如何處理?
此報錯是由於進行update操作時,使用了與原索引不同的type。由於ES不允許一個索引有多個type,因此更新資料的時候,需要使用與原索引相同的type。
官方Elasticsearch 7.0及以上版本將移除mapping中的type類型定義,type類型固定為_doc。
如何查詢索引中文檔的詳細內容?
可登入Kibana控制台,執行以下命令查看:
GET _search
{
"query": {
"match_all": {}
}
}
您也可以通過Kibana中的discover工具查看(需要先建立Index Pattern),具體操作請參見Kibana Guide。
叢集配置與變更問題
使用ES前,如何合理規劃叢集的資源和規格以及shard的大小和數量?
您可以參見規格容量評估進行規劃。
如何查看ES執行個體的配置參數?
可在執行個體的基本資料頁面查看,詳情請參見查看執行個體的基本資料。
當您使用Transport Client訪問ES執行個體時,cluster.name
為執行個體ID,詳情請參見Transport Client(5.x)。
變更集群配置會影響ES服務嗎?
變更集群配置會導致叢集重啟。目前阿里雲ES叢集重啟是採用滾動重啟的方式,在叢集狀態正常(綠色)、索引至少包含1個副本的情況下,如果資源使用率也不是特別高(可在叢集監控頁面查看,例如節點CPU使用率為80%左右,節點HeapMemory使用率為50%左右,節點load_1m低於當前資料節點的CPU核心數),那麼叢集在重啟期間能夠持續提供服務。但建議在業務低峰期進行操作。
變更節點數後,叢集會自動重新規劃分區嗎?
會。 ES資料節點數變更後,叢集會自動重新規劃分區,但自動重新規劃分區也不能保證所有資料一定是完全均勻分配的。受索引大小、分區數、節點數等多種因素影響,資料重新分配後依然有機率出現資料在分區上的分配不均勻情況。分區分配不均的排查方法和解決方案,請參見叢集負載不均問題的分析方法及解決方案。
ES執行個體支援變更雲端硬碟類型嗎?
支援。雲端硬碟降配時,支援雲端硬碟儲存效能由高到低依次為:ESSD雲端硬碟、SSD雲端硬碟、高效雲端硬碟;雲端硬碟升配時,支援雲端硬碟儲存效能由低到高依次為:高效雲端硬碟、SSD雲端硬碟、ESSD雲端硬碟。
ES支援將其他類型的節點變為冷資料節點嗎?
不支援,會導致執行個體不穩定,詳情請參見“Hot-Warm” Architecture in Elasticsearch 5.x。
升級了執行個體規格後,可以降低配置嗎,如何操作?
業務量臨時突增,如何變更集群配置,來保證業務正常進行?
升配叢集時,提示UpgradeVersionMustFromConsole如何處理?
出現此問題的原因是版本變更不符合要求。目前阿里雲ES只支援5.5.3版本升級到5.6.16版本、5.6.16版本升級到6.3.2版本、6.3.2版本升級到6.7.0版本,暫不支援其他版本間的升級。
升級ES版本需要多長時間?
具體時間長度與您叢集中的資料大小、資料結構、叢集規格等都有關係。一般為1個小時左右。
升級ES版本會影響叢集服務嗎?
升級期間可以繼續向叢集寫入資料或從叢集讀取資料,但不能進行其他變更操作,建議在流量低峰期進行。升級的注意事項和操作步驟請參見升級版本。
升配叢集報錯或逾時,如何處理?
導致升配叢集報錯或逾時的最常見原因是叢集狀態不正常。出現此種情況時,建議您先停止查詢和寫入,參見ES叢集負載高導致狀態red,如何處理?進行處理,待叢集狀態正常後再進行升配操作。您也可以在升配時進行強制變更,忽略叢集健康狀態,但此操作可能會影響ES服務,請謹慎操作。
其他原因導致的升配問題,需要您根據報錯資訊自行排查解決。
叢集無法變更配置,如何處理?
建議按照以下方式排查解決:
檢查您的叢集節點規格是否帶有本地碟。本地碟不支援變更配置,如果需要升級規格,需要先更換雲端硬碟類型。
如果前端校正返回庫存不足,建議您更換可用性區域進行變更配置或者是等其他使用者釋放該可用性區域的執行個體。
如果前端校正返回叢集狀態不健康,需要檢查叢集中是否有close狀態的索引,並將狀態暫時修改為open。如果叢集狀態為red,需要檢查是否有節點離線、shard無法分配等情況,優先解決叢集問題。
降配叢集是否滿足條件:
降配所選的目標規格的CPU和記憶體均需大於或等於當前規格的1/2,且不支援將節點規格降配至1核2 GiB、2核2 GiB、2核4 GiB和4核4 GiB。
說明如果您需要降配至2核4 GiB或4核4 GiB,請建立一個2核4 GiB或4核4 GiB的執行個體,然後通過資料移轉的方式(例如通過Logstash)將資料移轉到新執行個體中。
叢集負載滿足條件才可降配,降配使用限制和注意事項請參見降配叢集。
降配時不支援縮小磁碟容量大小。
是否可以在叢集的YML檔案配置中,調整http.max_content_length和discovery.zen.ping_timeout值?
不支援。阿里雲ES僅支援配置產品提供的參數,詳細資料請參見配置YML參數。不支援配置未提供的參數。
discovery.zen.ping_timeout、discovery.zen.fd.ping_timeout、discovery.zen.fd.ping_interval、discovery.zen.fd.ping_retries參數通常是不需要調整的。
我可以切換ES執行個體的VPC嗎?
不支援切換。您可以重新購買一個對應VPC下的ES執行個體,然後遷移資料,再釋放原執行個體。
ES執行個體變更雲端硬碟類型會導致已有的資料丟失嗎?
不會。已經存在的資料不會丟失,但是持續寫入的新資料有丟失的風險,建議在業務低峰期或者停止寫入後執行升配,詳細資料請參見升配叢集。
叢集升配時,提示叢集不健康,但是叢集狀態確認是Green,如何處理?
叢集中可能存在close狀態的索引,可通過POST /<index_name>/_open
命令,將對應索引的狀態暫時設定為open,詳細資料請參見升配叢集。
ES可以直接升配CPU,避免資料移轉嗎?
不可以。升配或降配CPU會觸發藍綠變更,導致節點IP地址發生變化,並且資料會從舊節點遷移到新節點。
為什麼冷資料節點無法降配?
叢集降配是有一定條件限制的,例如降配所選的目標規格的CPU和記憶體均需大於或等於當前規格的1/2,且不支援將節點規格降配至1核2 GiB、2核2 GiB、4核4 GiB和2核4 GiB等,詳細資料請參見使用限制。
如果不滿足降配條件,您可以選擇建立執行個體,遷移資料後再釋放原來的叢集,遷移資料的具體方案可參見遷移方案選取指南。
縮容叢集資料節點時,出現“該操作會導致當前叢集資源(Disk/CPU/Memory)不足或shard分配異常”的報錯,如何處理?
可能原因 | 解決方案 |
叢集資源不足。 叢集在縮容後,磁碟、記憶體、CPU等資源不足,不足以承擔當前系統資料或者負載。 | 使用 |
shard分配異常。 按照Lucene原理,對於任意一個資料節點中同一個索引的副本,Elasticsearch不會把2個或者2個以上的副本同時遷移到同一個資料節點中。這會導致縮容後叢集中索引的副本數可能大於等於資料節點數,從而導致shard分配異常。 | 使用
|
縮容叢集資料節點時,出現“叢集目前狀態異常或有未完成任務”的報錯,如何處理?
建議您通過智能營運診斷叢集健康情況,並根據診斷結果和診斷建議處理報錯。具體操作請參見診斷叢集健康情況。
縮容叢集資料節點時,出現“保留節點數需大於2”的報錯,如何處理?
為保證叢集的可靠性,保留的節點數必須大於等於2;對於多可用性區域執行個體,還需確保每個可用性區域節點數大於等於2,且每個可用性區域剩餘節點數相同。如果不滿足要求,需要重新選擇遷移或縮容的節點或者升配叢集。
縮容叢集資料節點時,出現“當前ES叢集配置不支援該操作”的報錯,如何處理?
使用GET _cluster/settings
命令查看叢集配置,判斷是否存在不允許資料分配的配置,即"cluster.routing.allocation.enable" : "none"
。如果存在,可將其暫時設定為允許,即"cluster.routing.allocation.enable" : "all"
。如果該配置會影響您的其他動作,待縮容完成後需要再設定回去。
使用auto_expand_replicas索引,導致資料移轉或者節點縮容失敗,如何處理?
原因
部分使用者使用了X-Pack提供的許可權管理功能,在早期版本中,該功能對應的.security索引預設會使用
"index.auto_expand_replicas" : "0-all"
配置,該配置會使得資料移轉或者節點縮容失敗。解決方案
查看索引配置。
GET .security/_settings
返回如下結果。
{ ".security-6" : { "settings" : { "index" : { "number_of_shards" : "1", "auto_expand_replicas" : "0-all", "provided_name" : ".security-6", "format" : "6", "creation_date" : "1555142250367", "priority" : "1000", "number_of_replicas" : "9", "uuid" : "9t2hotc7S5OpPuKEIJ****", "version" : { "created" : "6070099" } } } } }
選擇其中一種方式修改配置。
方式一
PUT .security/_settings { "index" : { "auto_expand_replicas" : "0-1" } }
方式二
PUT .security/_settings { "index" : { "auto_expand_replicas" : "false", "number_of_replicas" : "1" } }
重要number_of_replicas表示索引的副本個數,可以根據實際需求進行配置,但要保證至少有1個,且不大於可用的資料節點個數。
ES如何清理緩衝?
您可以登入Kibana控制台,執行如下命令清理緩衝:
清除特定索引的緩衝
POST /<索引名>/_cache/clear?fielddata=true
清除所有緩衝
POST /_cache/clear
如何變更ES叢集的可用性區域?
參見遷移可用性區域節點操作。
ES叢集支援磁碟獨立擴容嗎?
支援。具體操作請參見升配叢集。
擴容會觸發叢集滾動重啟,建議在業務低峰期操作。
ES支援修改JVM參數嗎?
阿里雲ES的JVM參數使用的是官方ES推薦的參數配置,預設為叢集記憶體的一半,不支援修改,最大可分配32 GB。詳細資料請參見Heap size settings。
外掛程式、分詞、同義字問題
使用IK分詞器時,如何自訂擴充分詞詞典內容?
您可以通過阿里雲ES的IK分詞外掛程式的冷更新或熱更新功能,添加或刪除詞典中的內容,詳情請參見使用IK分詞外掛程式(analysis-ik)。
使用IK分詞外掛程式時,提示ik startOffset報錯,如何處理?
以上報錯觸發了ES 6.7版本的bug,需要您重啟叢集,詳情請參見重啟執行個體或節點。
本地IK詞庫檔案丟失,可以在叢集管理頁面找回嗎?
無法找回,只能在叢集管理頁面上進行刪除和更新操作。建議您下載官方主分詞和停用分詞檔案,把對應的主分詞和停用詞改成您系統詞庫中的名詞,然後重新上傳。
更新IK分詞詞庫後,如何使新的詞庫對之前的資料生效?
需要重建索引。已經配置了IK分詞的索引,在IK詞典冷更新或熱更新操作完成後將只對新資料生效。如果您希望對全部資料生效,需要重建索引,詳情請參見配置reindex白名單。
FullGC有標準值嗎?
FullGC(清理整個堆空間)是否存在問題,需要通過業務延時,以及對比歷史和現在的狀況來分析。CMS回收器在記憶體為75%就會開始回收,需要留一點空間以應付突增流量。
不使用的系統外掛程式可以卸載嗎?
部分可卸載。可在系統預設外掛程式列表中查看,如果外掛程式對應的操作列下出現卸載,則表示該外掛程式可卸載,具體操作步驟請參見安裝或卸載系統預設外掛程式。
阿里雲ES的IK分詞外掛程式和開源版本的IK外掛程式的詞庫一致嗎?
一致。阿里雲ES IK外掛程式內建的詞庫就是對應版本的開源IK的詞庫,詳情請參見IK Analysis for Elasticsearch。
自訂外掛程式可以訪問外部網路嗎,例如讀取Github上的詞庫檔案?
自訂外掛程式不支援訪問外網。如果要訪問外部檔案,可將檔案上傳至阿里雲OSS上,通過串連OSS讀取檔案。
自訂外掛程式支援熱更新功能嗎?
不支援。如果需要熱更新,可參考IK詞典熱更新的方式,自行配置,詳情請參見IK Analysis for Elasticsearch。
analysis-aliws分詞是如何配置的,檔案的格式是什麼樣的?
具體配置方式請參見使用AliNLP分詞外掛程式(analysis-aliws)。
詞典檔案要求如下:
檔案名稱:必須是aliws_ext_dict.txt。
檔案格式:必須是UTF-8格式。
內容:每行一個詞,前後不能有空白字元;需要使用UNIX或Linux的分行符號,即每行結尾是\n。如果是在Windows系統中產生的檔案,需要在Linux機器上使用dos2unix工具將詞典檔案處理後再上傳。
ES同義字、IK分詞、AliNLP分詞有哪些區別?
分詞類型 | 使用方式 | 功能描述 | 支援上傳的檔案類型 | 分詞器或分析器 |
同義字 | 在叢集配置模組,上傳同義字檔案後使用。 | 在檔案中寫入幾個同義字,查詢其中一個,其他的也會顯示。 | UTF-8編碼的TXT檔案 | 自訂 |
IK分詞 | analysis-ik外掛程式方式。 | 根據main.dic檔案,對一段話進行拆分。查詢時,只要查詢的內容中包含了拆分後的詞,查詢結果中就會顯示該段話。同時還包含了停用詞stop.dic,拆分後,stop.dic檔案中包含的詞會被過濾掉。對應的詞庫可以在官方文檔中查看。 | UTF-8編碼的DIC檔案 | 分詞器:
|
AliNLP分詞 | analysis-aliws外掛程式方式。 | 與IK分詞大致相同,但不包含單獨的停用詞檔案。停用詞整合在主分詞詞庫:aliws_ext_dict.txt檔案中,且詞庫不對外開放。目前不支援自訂停用詞。 | 檔案名稱必須為:aliws_ext_dict.txt,UTF-8編碼 |
|
ES IK分詞模式在哪裡配置?
阿里雲ES提供了analysis-ik外掛程式,預設已安裝不能卸載。您可以對預設詞典進行冷熱更新,並在建立索引mappings時應用,詳細資料請參見使用IK分詞外掛程式(analysis-ik)。
阿里雲ES支援哪些內建的中文分詞器?
目前阿里雲ES支援的內建中文分詞器包括analysis-ik和analysis-aliws,您需要配置對應的詞典即可使用。
通過OSS熱更新詞典檔案,OSS側詞典檔案內容發生變化,ES側會自動更新嗎?
不會。阿里雲ES暫時不支援OSS檔案熱更新,OSS檔案內容發生變化後,需要重新手動設定上傳才會生效,不支援自動同步更新。並且對於已經配置了IK分詞、同義字或AliNLP分詞的索引,詞典更新後將只對新資料生效。如果您希望對全部資料生效,需要重建索引。
阿里雲ES使用的IK分詞器是否支援遠程字典?
不支援。阿里雲ES提供的IK分詞器支援上傳或更新詞典,詳細資料請參見使用IK分詞外掛程式(analysis-ik)。不支援遠程詞典及相關配置,例如IKAnalyzer.cfg.xml等。
阿里雲ES 7.10版本執行個體如何安裝向量檢索外掛程式(aliyun-knn)?
阿里雲ES 7.10版本執行個體的向量檢索外掛程式預設整合在apack外掛程式中(預設已安裝),安裝或卸載向量檢索外掛程式都需對apack外掛程式進行操作,詳細資料請參見使用apack外掛程式的物理複製功能。其他版本的安裝說明,請參見使用向量檢索外掛程式(aliyun-knn)。
當執行個體的核心小版本大於等於1.4.0時,apack外掛程式版本已為最新版本,無需更新。使用時,可通過GET _cat/plugins?v
命令擷取外掛程式版本。
安裝外掛程式重啟會影響叢集服務嗎?
如果叢集整體負載不高且索引存在副本分區,一般情況下重啟(變更)過程中可對外持續提供服務。但在某些情境下,重啟(變更)過程中可能會出現訪問逾時,例如強制重啟並發度高、叢集負載很高並且已經存在叢集訪問停用情況、沒有副本分區、在重啟或強制重啟過程中存在大量的寫入和查詢等情境,建議重啟前先在用戶端設計好重試機制並且在業務低峰期進行操作。
日誌問題
ES支援設定.security日誌的儲存時間嗎?
支援。可以通過ILM索引生命週期進行配置,具體操作請參見通過索引生命週期管理Heartbeat資料。
.security索引儲存elastic帳號相關資訊,定期刪除可能會導致帳號無法登入ES。
ES如何將日誌儲存到本地?
可調用ListsearchLog API實現,詳情請參見ListSearchLog。
查看不到ES的查詢和更新日誌,如何處理?
可通過設定慢日誌,降低日誌記錄的時間戳記查看,詳情請參見相關文檔。
如何配置和查看ES執行個體的慢日誌?
如何通過程式定期擷取ES執行個體的慢日誌?
可調用阿里雲ES的ListSearchLog API實現,詳情請參見ListSearchLog。
如何查有哪些用戶端在使用ES執行個體?
可通過ES的訪問日誌或審計日誌查看:
如果您需要查看對應執行個體的增、刪、改、查等操作資訊,需要開啟審計日誌。
如果您需要查看叢集node和IP地址、bodySize、請求內容、請求時間、發起請求的用戶端IP地址、uri等資訊,需要開啟訪問日誌。
訪問日誌和審計日誌的使用限制、注意事項以及開啟操作等詳細資料,請參見查詢日誌。
資料備份與恢複問題
ES執行個體的快照能恢複到其他版本的執行個體中嗎?
如果是自動備份,則只能將快照恢複到原執行個體中或通過跨叢集快照恢複功能進行操作,詳情請參見自動備份與恢複和設定跨叢集OSS倉庫。
如果是手動備份,可以將快照恢複到其他執行個體中。一般是建議在相同版本之間恢複,不同版本之間可能存在相容性問題,詳情請參見手動備份與恢複。
阿里雲ES控制台上升級版本,備份ES資料時,提示叢集狀態不健康,如何處理?
ES叢集狀態不健康時,無法成功觸發快照備份,建議您優先恢複叢集狀態為green。
開啟了自動備份,但是沒有設定過OSS,是不是沒有備份成功?
阿里雲ES預設為您提供了一個OSS Bucket,您可以參見登入Kibana控制台,在Kibana中使用GET _snapshot/aliyun_auto_snapshot/_all
命令,擷取自動備份的資料。
通過快照遷移(恢複)資料時,目標端顯示分區異常。通過分區恢複指令POST /_cluster/reroute?retry_failed=true
依舊無法成功,且對應索引顯示異常,如何處理?
快照遷移(恢複)資料時,出現如下異常情況:
嘗試刪除問題索引後,再通過_restore API進行恢複。恢複命令中需要添加max_restore_bytes_per_sec參數,限制節點的恢複速度,預設為每秒40 MB。
POST /_snapshot/aliyun_snapshot_from_instanceId/es-cn-instanceId_datetime/_restore
{
"indices": "myIndex",
"settings": {
"max_restore_bytes_per_sec" : "150mb"
}
}
您還可以添加其他參數說明,例如:
compress:是否壓縮,預設為true。
max_snapshot_bytes_per_sec:每個節點的快照速率,預設為每秒40 MB。
阿里雲ES中的資料是否可以匯出到本地?
阿里雲ES提供了資料備份功能,詳情請參見資料備份概述。您可以先將資料備份到OSS中,再通過OSS的控制台下載檔案功能將資料存放區到本地。
如何?跨叢集恢複快照?
跨叢集恢複快照的具體操作、限制條件和注意事項,請參見設定跨叢集OSS倉庫。對於同帳號跨地區的資料移轉情境,可以通過快照備份與恢複命令實現,更多遷移方案請參見遷移方案選取指南。
阿里雲ES有哪些資料備份方案?
阿里雲ES的資料備份方案,以及對應方案的使用情境和限制請參見資料備份概述。
叢集監控警示問題
如何配置X-Pack Watcher警示?
配置DingTalk機器人接收X-Pack Watcher警示的具體操作,請參見配置DingTalk機器人接收X-Pack Watcher警示;配置DingTalk機器人接收X-Pack Watcher警示的具體操作,請參見配置企業微信機器人接收X-Pack Watcher警示。
通過為阿里雲ES添加X-Pack Watcher,可以實現當滿足某些條件時執行某些操作。例如當logs索引中出現error日誌時,觸發系統自動發送DingTalk訊息。可以簡單地理解為X-Pack Watcher是一個基於ES實現的監控警示服務。
出現GC記憶體無法分配的警示,如何處理?
可能原因包括:叢集負載過高、查詢QPS太高或者寫入資料太大等,請按照以下說明排查處理:
叢集負載過高:參見叢集磁碟使用率過高和read_only問題的排查與處理方法處理。
查詢QPS太高或者寫入資料太大:建議安裝叢集限流外掛程式(aliyun-qos),使用aliyun-qos外掛程式進行讀寫限流,詳情請參見使用叢集限流外掛程式(aliyun-qos)。
說明對於圖片檢索,建議安裝向量檢索外掛程式(aliyun-knn),並參見使用向量檢索外掛程式(aliyun-knn)進行叢集和索引規劃。
叢集狀態指標數值分別表示什麼意思?
叢集狀態指標展示了叢集的健康度,數值為0.00時表示正常。指標各數值的含義如下,更多詳細資料請參見指標含義與異常處理建議。
數值 | 含義 |
0.00 | 叢集狀態正常。 |
1.00 | 叢集處於亞健康狀態。當前叢集中某個或某幾個索引的副本分區丟失,不影響繼續使用。 |
2.00 | 叢集狀態異常。當前叢集中某個或某幾個索引的主分區丟失(unassigned),影響叢集正常使用,需要儘快修複。 |
如何查看ES的磁碟使用方式?
您可以通過控制台或Kibana的X-Pack監控查看ES的磁碟使用方式,詳細資料請參見指標含義與異常處理建議和配置Monitoring監控日誌。
CMS GC時報錯promotion failed,如何處理?
Elasticsearch在使用CMS記憶體回收行程時可能會遇到該錯誤,這通常表示老年代空間不足,對象晉陞(promotion)到老年代失敗。在Elasticsearch中,若出現此類CMS記憶體回收相關的問題,您可以考慮以下解決措施:
監控與日誌分析:
查看GC日誌擷取詳細的記憶體回收資訊,分析是否存在頻繁的CMS GC操作或Full GC操作,確認是否因老年代空間不足導致
CMS GC promotion failed
。登入Elasticsearch日誌查詢頁面,搜尋包含
promotion failed
的相關日誌記錄,進一步瞭解問題的具體原因。
調整堆記憶體大小及記憶體回收行程設定:
如果Elasticsearch版本>=6.7.0且資料節點記憶體>=32GB,建議您將記憶體回收行程切換至G1,以最佳化記憶體回收效能。
根據叢集實際資源使用方式和業務需求,評估是否需要擴充執行個體記憶體。
調優建議:
如果持續出現記憶體相關問題,可能需要整體評估索引資料量、查詢負載以及叢集資源配置,必要時聯絡阿里雲支援人員尋求專業調優指導。
訪問叢集問題
如何使用用戶端串連阿里雲ES叢集,與開源ES有什麼區別?
使用阿里雲ES的內網或外網地址串連,對應開源ES的叢集地址,詳情請參見通過用戶端訪問Elasticsearch。
通過用戶端訪問ES執行個體時,可以關閉Basic Auth(安全認證)嗎?
不可以。Basic Auth是X-pack內建的Kibana認證機制,ES執行個體包含X-Pack功能,因此不支援關閉Basic Auth。
阿里雲ECS和ES的VPC相同,但可用性區域不同,那ECS可以通過內網訪問ES嗎?
可以。只要ECS和ES在同一VPC下,就可以通過內網訪問。
如何配置ES的公網或私網訪問白名單?
當您需要通過公網或私網來訪問Elasticsearch執行個體時,可將待訪問裝置的IP地址加入到執行個體的公網或私網訪問白名單組中,具體操作請參見配置執行個體公網或私網訪問白名單。配置時,需要注意:
配置公網地址訪問白名單時,需要先開啟公網地址開關(預設關閉),再進行操作。
白名單下的IP地址或者IP網段數量最多支援50個。
如果您設定的白名單為IP網段的形式,那麼您填寫的IP地址需要為掩碼計算後子網網段的第一個IP地址。
Elasticsearch不允許同時配置0.0.0.0/0和一個或多個具體的IP地址或IP網段,否則系統會提示報錯。如果您需要配置0.0.0.0/0用來測試,請單獨配置。
如何通過外網串連ES執行個體?
可通過執行個體的公網地址來串連,並且需要配置公網地址訪問白名單,詳情請參見配置執行個體公網或私網訪問白名單。串連時需要配置訪問網域名稱、使用者名稱和密碼等參數,詳情請參見通過用戶端訪問Elasticsearch。
無法訪問ES,報錯Failed to establish a new connection: [Errno 61] Connection refused
可能原因及解決方案如下。
可能原因 | 解決方案 |
公網訪問不通 | 在通過公網網域名稱訪問ES的情境下,請按照以下方式排查解決:
|
私網訪問不通 | 在通過私網網域名稱訪問ES的情境下,請按照以下方式排查解決:
|
叢集自身狀況不佳 | 在網路都連通的情況下,出現無法訪問ES,請按照以下方式排查叢集自身狀況,根據具體情況自行解決:
|
重設密碼是否會影響ES訪問?
控制台重設密碼會影響您使用elastic帳號訪問阿里雲ES執行個體,不影響其他非elastic帳號訪問該執行個體。因此建議不要在程式中通過elastic帳號訪問執行個體,而是通過自訂使用者來訪問(需要給使用者賦予相應的許可權)。詳細資料,請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控。
密碼修改完成並確認提交後,不會觸發執行個體重啟。
Elasticsearch-Head外掛程式5.0.0版本無法訪問阿里雲ES(所有版本),如何處理?
該類問題一般與Chrome限制跨域相關,下面是Mac安裝Chrome後解決Chrome跨域問題的方法,其他動作系統請以Chrome跨網域設定為準。
建立一個空的檔案夾。
開啟終端輸入以下命令。
open-n/Applications/Google\Chrome.app/--args--disable-web-security--user-data-dir=建立的空檔案夾路徑
由於Elasticsearch-Head外掛程式在5.x版本之後已不再維護,因此建議您使用Cerebro訪問阿里雲ES執行個體,詳細資料請參見通過Cerebro訪問Elasticsearch。