全部產品
Search
文件中心

Elasticsearch:配置YML參數

更新時間:Aug 23, 2024

通過配置Elasticsearch執行個體的YML參數,您可以設定允許自動建立索引、刪除索引指定名稱、配置Auditlog索引、開啟Watcher以及其他配置。本文介紹如何配置YML參數、CORS訪問、reindex白名單、Auditlog和queue大小。

注意事項

2020年10月起,由於Elasticsearch網路架構調整,導致部分通過reindex方式跨叢集遷移資料的情境受到了限制。如果需要使用reindex方式跨叢集遷移資料,請參見通過執行個體私網打通將自建Elasticsearch資料移轉至阿里雲中的注意事項進行處理。

說明

對於華北3(張家口)和海外地區,由於網路架構調整時間不確定,因此需要提交工單,聯絡Elasticsearch支援人員,校正網路是否可以互連。

修改配置

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,選擇配置與管理 > ES叢集配置

  5. ES叢集配置頁面,單擊YML檔案配置右側的修改配置

  6. YML檔案配置頁面,按照以下說明進行配置。

    說明

    如果您需要查看elasticsearch.yml的內容,可登入Kibana控制台,執行GET _cluster/settings?include_defaults命令。

    參數

    說明

    自動建立索引

    當Elasticsearch執行個體接收到新文檔後,如果沒有對應索引,是否允許系統自動建立索引。

    對應的YML檔案的配置項為action.auto_create_index,預設為false

    Elasticsearch預設不允許自動建立索引,您可以通過以下方式開啟:

    重要

    自動建立的索引可能不符合您的預期,建議您評估後再開啟。

    • 通過控制台叢集配置開啟。該操作為YML靜態配置,會觸發執行個體重啟。

    • 通過動態方式快速開啟(不需要重啟)。登入Kibana控制台,通過以下命令設定允許自動建立索引:

      • 允許自動建立所有索引

        PUT /_cluster/settings
        {
          "persistent": {
            "action": {
              "auto_create_index": "true"
            }
          }
        }
        重要

        該方式將開放所有索引的自動建立功能,如果您需要禁止,請將true改成false

      • 只允許自動建立部分指定索引,如下樣本僅允許自動建立系統索引:

        PUT /_cluster/settings
        {
          "persistent": {
            "action": {
              "auto_create_index": "+.*,-*"
            }
          }
        }

    刪除索引指定名稱

    在刪除索引時是否需要明確指定索引名稱。如果選擇刪除或關閉時索引名稱支援萬用字元,則可以使用萬用字元進行大量刪除索引。索引刪除後不可恢複,請謹慎使用此配置。

    對應的YML檔案的配置項為action.destructive_requires_name,預設為true

    Auditlog

    開啟後,系統會記錄Elasticsearch執行個體對應的增、刪、改、查等操作產生的審計日誌,該日誌資訊會佔用您的磁碟空間,同時也會影響效能,不建議開啟,請謹慎使用此配置。更多參數說明,請參見配置Auditlog(審計日誌)

    重要

    Elasticsearch 7.x及以上版本支援在控制台查看審計日誌,且目前僅開放部分地區,詳情請參見使用限制。查看時需要先開啟Auditlog,詳細資料請參見查詢日誌。其他版本需要在叢集中查看審計日誌,例如通過在Kibana控制台上查看.security_audit_log-*開頭的索引查看審計日誌。

    對應的YML檔案的配置項為xpack.security.audit.enabled,預設為false

    開啟Watcher

    開啟後,可使用X-Pack的Watcher功能。請注意定時清理.watcher-history*索引,避免佔用大量磁碟空間。

    對應的YML檔案的配置項為xpack.watcher.enabled,預設為false

    其他Configure配置

    支援的部分配置項如下(以下配置項,如果沒有標識具體適用於哪個Elasticsearch版本,預設相容Elasticsearch 5.x、6.x和7.x版本):

    • 配置CORS訪問

      • http.cors.enabled

      • http.cors.allow-origin

      • http.cors.max-age

      • http.cors.allow-methods

      • http.cors.allow-headers

      • http.cors.allow-credentials

    • 配置reindex白名單

      reindex.remote.whitelist

    • 配置Auditlog(審計日誌)

      Elasticsearch 7.x和8.x版本僅支援配置xpack.security.audit.logfile.events.include參數,5.x和6.x版本支援以下參數:

      • xpack.watcher.enabled

      • xpack.notification

      • xpack.security.audit.enabled

      • xpack.security.audit.index.bulk_size

      • xpack.security.audit.index.flush_interval

      • xpack.security.audit.index.rollover

      • xpack.security.audit.index.events.include

      • xpack.security.audit.index.events.exclude

      • xpack.security.audit.index.events.emit_request_body

      • xpack.security.audit.index.settings.index

    • LDAP功能

      除5.x版本外,其他版本支援:

      • xpack.security.authc.realms.ldap1

      • xpack.security.authc.realms.active_directory1

      • xpack.security.authc.realms.pki1

      • xpack.security.authc.realms.saml1

      • xpack.security.authc.realms.kerberos1

      • xpack.security.authc.token.enabled

    • 配置queue大小

      • thread_pool.bulk.queue_size(適用於5.x及6.x版本)

      • thread_pool.write.queue_size(適用於6.x、7.x及8.x版本)

      • thread_pool.search.queue_size

    • 自訂SQL外掛程式配置

      xpack.sql.enabled

      預設情況下Elasticsearch執行個體會啟用X-Pack內建的SQL外掛程式,如需上傳自訂的SQL外掛程式,請將xpack.sql.enabled設定為false

    重要
    • 配置YML檔案會觸發叢集滾動重啟。如果叢集中的索引有副本且叢集負載正常(CPU使用率在60%左右,堆記憶體使用量率在50%左右,load_1m低於CPU核心數),一般情況下,在重啟過程中可持續對外提供服務。重啟時間長度與叢集規模、資料量及負載情況等有關係,建議在業務低峰期操作。

    • 如果叢集負載過高且索引沒有副本,同時業務中存在大量的寫入或查詢等情境,在叢集變更過程中,業務可能會出現偶發的訪問逾時現象。建議在用戶端訪問指令碼中配置重試機制,以減小對業務的影響。

  7. 選中該操作會重啟執行個體,請確認後操作,單擊確定

    確定後,Elasticsearch執行個體會重啟。重啟過程中,可在工作清單查看進度。重啟成功後,即可完成YML檔案的配置。

配置CORS訪問

通過配置跨域資源共用CORS(Cross-origin resource sharing)訪問,設定是否允許其他域資源下的瀏覽器向Elasticsearch發送請求。您可以在YML檔案配置中,配置CORS訪問,支援配置的參數如下。

重要
  • 表格中的參數是Elasticsearch為支援HTTP協議開放的自訂配置。

  • 表格中的參數僅支援靜態配置。如果您想使配置生效,需要將配置資訊寫入elasticsearch.yml檔案中。

  • 表格中的參數依賴於叢集網路設定(Network settings)。

參數

預設值

說明

http.cors.enabled

false

設定是否啟用跨域資源訪問(Elasticsearch是否允許其他域資源下的瀏覽器向其發送請求):

  • true:啟用。Elasticsearch會處理OPTIONS CORS請求。如果發送請求中的域資訊已在http.cors.allow-origin中聲明,那麼Elasticsearch會在頭資訊中附加Access-Control-Allow-Origin,以響應跨域請求。

  • false:不啟用。Elasticsearch會忽略要求標頭中的域資訊,將不會使用Access-Control-Allow-Origin資訊頭應答。如果用戶端不支援發送附加域資訊頭的preflight請求,或者不校正從服務端返回的報文的頭資訊中的Access-Control-Allow-Origin資訊,那麼跨域安全訪問將受到影響。如果關閉CORS支援,則用戶端只能嘗試通過發送OPTIONS請求,以瞭解此響應資訊是否存在。

http.cors.allow-origin

“”

域資源配置項,可設定接受來自哪些網域名稱的請求。預設不允許接受跨域請求且無配置。支援Regex,例如/https?:\/\/localhost(:[0-9]+)?/,表示可響應符合此正則的請求資訊。

警告

*是合法配置,表示叢集支援來自任意網域名稱的跨域請求,此配置存在安全風險,不建議使用。

http.cors.max-age

1728000(20天)

瀏覽器可發送OPTIONS請求以擷取CORS配置資訊,此配置項可設定擷取的資訊在瀏覽器中的緩衝時間,單位為秒。

http.cors.allow-methods

OPTIONS, HEAD, GET, POST, PUT, DELETE

要求方法配置項。

http.cors.allow-headers

X-Requested-With, Content-Type, Content-Length

要求標頭資訊配置項。

http.cors.allow-credentials

false

憑證資訊設定項目,設定是否允許回應標頭中返回Access-Control-Allow-Credentials資訊:

  • true:允許

  • false:不允許

配置reindex白名單

通過當前叢集調用reindex API,從遠程叢集遷移索引資料前,需要先配置reindex白名單。您可以在YML檔案配置中,配置reindex白名單,支援配置的參數如下。

參數

預設值

說明

reindex.remote.whitelist

[]

設定遠程Elasticsearch叢集的訪問地址,將其添加到當前叢集的遠端存取白名單中。

白名單支援hostport的組合,並使用逗號分隔多個主機配置(例如otherhost:9200,another:9200,127.0.10.**:9200,localhost:**),不識別協議資訊。

配置reindex白名單時,如果遠程Elasticsearch叢集為單可用性區域的Elasticsearch執行個體,請使用<Elasticsearch執行個體的網域名稱>:9200;如果為多可用性區域執行個體,請使用執行個體中所有資料節點的IP地址與連接埠的組合。具體樣本如下:

  • 單可用性區域單可用性區域配置樣本

    reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]
  • 多可用性區域多可用性區域reindex白名單配置

    reindex.remote.whitelist: ["10.0.xx.xx:9200","10.0.xx.xx:9200","10.0.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200"]
    說明

    reindex白名單配置完成後,即可調用reindex API重建索引。具體操作,請參見阿里雲ES間跨叢集reindex

配置Auditlog(審計日誌)

Auditlog為審計日誌,預設關閉。查看審計日誌前,需要先開啟Auditlog。開啟後,系統會記錄Elasticsearch執行個體對應的增、刪、改、查等操作產生的日誌。對於審計日誌的開啟、配置和查看,Elasticsearch不同版本執行個體的操作有所不同,具體如下。

說明

關於Auditlog的更多詳細資料,請參見Auditing Security Settings

7.x及以上版本

  1. 進入YML檔案配置面板。

    具體操作請參見修改配置

  2. 選中Auditlog參數中的開啟Auditlog,開啟審計日誌。

  3. 自訂Auditlog配置。

    開啟Auditlog後,您可以在其他Configure配置中調整xpack.security.audit.logfile.events.include參數的配置,樣本如下:

    xpack:
      security:
        audit:
          logfile:
            events:
              include: >-
                access_denied,anonymous_access_denied,authentication_failed,connection_denied,tampered_request,run_as_denied,run_as_granted
    重要
    • 7.x及以上版本執行個體僅支援配置xpack.security.audit.logfile.events.include參數。

    • 預設Auditlog配置只會在審計日誌中列印請求被拒絕或失敗的審計日誌,如需擷取請求成功的審計日誌,需要添加access_granted事件。添加後,磁碟將儲存所有訪問資訊,可能會存在磁碟使用率過高的風險,建議您問題排查完後,關閉審計日誌功能。

  4. 查看審計日誌(Auditlog)。

    對於7.x及以上版本執行個體,開啟Auditlog索引後,您可以在控制台的日誌查詢頁面查看審計日誌,詳細資料請參見查詢日誌。目前審計日誌功能僅開放部分地區,詳情請參見使用限制

5.x及6.x版本

  1. 進入YML檔案配置面板。

    具體操作請參見YML檔案配置

  2. 選中Auditlog參數中的開啟Auditlog索引,開啟審計日誌。

    Auditlog索引的預設配置如下,您可以根據具體業務進行調整。

    xpack.security.audit.index.bulk_size: 5000
    xpack.security.audit.index.events.emit_request_body: false
    xpack.security.audit.index.events.exclude: run_as_denied,anonymous_access_denied,realm_authentication_failed,access_denied,connection_denied
    xpack.security.audit.index.events.include: authentication_failed,access_granted,tampered_request,connection_granted,run_as_granted
    xpack.security.audit.index.flush_interval: 180s
    xpack.security.audit.index.rollover: hourly
    xpack.security.audit.index.settings.index.number_of_replicas: 1
    xpack.security.audit.index.settings.index.number_of_shards: 10

    配置

    預設設定

    說明

    xpack.security.audit.index.bulk_size

    1000

    當您將多個審計事件分批寫入到一個Auditlog索引中時,可通過該參數,設定寫入事件的數量。

    xpack.security.audit.index.flush_interval

    1s

    控制緩衝事件重新整理到索引的頻率。

    xpack.security.audit.index.rollover

    daily

    控制滾動構建到新索引的頻率,可以設定為hourlydailyweeklymonthly

    xpack.security.audit.logfile.events.include

    access_denied,anonymous_access_denied,authentication_failed, connection_denied,tampered_request,run_as_denied,run_as_granted

    控制何種Auditlog事件可以被採集到審計日誌中。目前審計日誌功能僅開放部分地區,詳情請參見使用限制。完整事件類型列表,請參見Audit event types (7.x)

    xpack.security.audit.index.events.include

    access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted

    控制何種Auditlog事件可以被寫入到索引中,僅5.x和6.x版本的執行個體支援。完整事件類型列表,請參見Audit event types (6.x)

    xpack.security.audit.index.events.exclude

    null(預設不處理任何事件)

    構建索引過程中,排除的Auditlog事件。

    xpack.security.audit.index.events.emit_request_body

    false

    當觸發明確的事件類型時(例如authentication_failed),是否忽略或包含以REST發送的請求體。

    警告

    當Auditlog中包含RequestBody資訊時,可能會在記錄檔中暴露敏感資訊。

  3. 查看審計日誌(Auditlog)。

    對於5.x和6.x版本執行個體,當開啟Auditlog後,Auditlog檔案將輸出到Elasticsearch執行個體中,並使用.security_audit_log-*開頭的索引名稱。因此您可以通過在Kibana控制台上查看.security_audit_log-*開頭的索引來查看審計日誌。

    重要

    Auditlog索引會佔用執行個體的儲存空間。由於Elasticsearch不支援自動到期清除策略,因此需要手動清除舊的Auditlog索引。

  4. 可選:配置儲存Auditlog的索引分區。

    對於5.x和6.x版本執行個體,您可以通過xpack.security.audit.index.settings配置儲存Auditlog的索引分區。以下配置構建Auditlog索引的分區和副本均為1

    xpack.security.audit.index.settings:
      index:
        number_of_shards: 1
        number_of_replicas: 1
    說明

    如果您希望通過傳入配置參數產生Auditlog索引,請在開啟Auditlog索引(設定xpack.security.audit.enabledtrue)的同時傳入此配置。否則,Auditlog索引將使用預設的number_of_shards: 5number_of_replicas: 1配置。

配置queue大小

通過自訂queue大小,調整文檔寫入和搜尋的隊列大小。您可以在YML檔案配置中,配置queue大小。以下樣本配置文檔寫入和搜尋queue大小為5001000,實際業務中請根據具體情況自行調整。

  • 5.x及6.x版本

    thread_pool.bulk.queue_size: 500
    thread_pool.search.queue_size: 1000
  • 6.x、7.x及8.x版本

    thread_pool.write.queue_size: 500
    thread_pool.search.queue_size: 1000

參數

預設值

說明

thread_pool.bulk.queue_size

200

文檔寫入隊列大小,適用於Elasticsearch 5.x及6.x版本。

thread_pool.write.queue_size

200

文檔寫入隊列大小,適用於Elasticsearch 6.x、7.x及8.x版本。

thread_pool.search.queue_size

1000

文檔搜尋隊列大小。

說明

Elasticsearch執行個體的thread_pool.search.queue_size參數的最大值為1000,調整為1000以上仍取值為1000。