全部產品
Search
文件中心

Elasticsearch:使用analytic-search外掛程式

更新時間:Jun 30, 2024

analytic-search外掛程式是Elasticsearch團隊自主開發的日誌情境檢索外掛程式。通過該外掛程式,您可以實現Kibana Discover查詢加速,支援通過開啟時間欄位index.sort,在特定查詢條件下,降低查詢耗時;支援開啟查詢並發功能,大幅降低查詢耗時。本文介紹如何使用analytic-search外掛程式。

背景資訊

analytic-search外掛程式的主要功能以及各功能的適用情境和效能測試資訊如下:

Kibana Discover查詢加速功能

  • 適用情境:日誌檢索情境。例如Kibana Discover中的無條件或單條件查詢。
  • 功能優勢:通過最佳化索引合并策略及Date_histogram執行計畫策略,在沒有查詢條件或者僅有一個查詢條件時,大幅度降低查詢耗時(日增量>1 TB資料量的情境下,分鐘級查詢可最佳化至5s內)。
  • 效能測試資訊:
    • 測試環境
      • 節點:10 * 16核64 GB。
      • 資料集:某業務日誌資料,一天600億個文檔,分成12個索引,每個索引60個分區。
    • 開啟Kibana Discover查詢加速後,不同儲存介質的效能表現如下:
      查詢條件SSD雲端硬碟高效雲端硬碟OpenStore儲存
      沒有查詢條件耗時降低96%耗時降低95%耗時降低94%
      一個查詢條件耗時降低88%耗時降低77%耗時降低85%
      多個查詢條件耗時降低8%耗時降低11%耗時降低14%

查詢並發功能

  • 適用情境:查詢QPS低,查詢召回階段耗時高,節點計算資源充足的情境。
  • 功能優勢:通過實現召回過程的並發,提高資源使用率,召回階段平均耗時降低50%。
  • 效能測試資訊:
    • 測試環境
      • 節點:3 * 16核64 GB OpenStore冷熱共用計算型。
        說明 OpenStore冷熱共用計算型規格在國際站無售賣。
      • 資料集:某業務日誌資料,單索引1.6 TB,60億個文檔,60個分區。
      • 查詢:3 TermQuery(and) + TimeRange + Sort + Datehistogram,單shard命中1000w(命中率10%)。
    • 測試結果:
      • 單shard查詢耗時降低65%。
      • 多shard查詢耗時降低53%。

前提條件

已建立Elasticsearch執行個體,版本為7.10.0且核心版本為1.7.0及以上。本文以Elasticsearch 7.10.0為例介紹,建立執行個體的方法請參見建立Elasticsearch執行個體
說明 analytic-search外掛程式預設已安裝,不可卸載,您可在外掛程式配置頁面查看。

開啟Kibana Discover查詢加速

建立索引時,在settingsmappings中增加如下配置即可。
說明 以下樣本僅供參考。實際使用時,您需要按照業務實際欄位名稱調整index.sort的時間戳記欄位名和排序。
{
  "settings": {
    "index.points.same_sort_order_as_index_sort": true,
    "index.sort.field": [
      "@timestamp"
    ],
    "index.sort.order": [
      "desc"
    ]
  },
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      }
    }
  }
}

使用查詢並發功能

  1. 登入目標Elasticsearch執行個體的Kibana控制台,根據頁面提示進入Kibana首頁。
    登入Kibana控制台的具體操作,請參見登入Kibana控制台
    說明 本文以Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請以實際介面為準。
  2. 單擊右上方的Dev tools
  3. Console頁簽,執行以下指令碼,開啟並發查詢。
    PUT _cluster/settings
    {
      "persistent": {
        "apack.analytic_search.doc_concurrency.enabled": "true"
      }
    }
    叢集設定以上配置後,Elasticsearch新接收到的查詢任務將會按預設的並發策略執行,您可以通過調整並發相關配置來控制並發查詢行為,相關的配置如下。
    • 叢集層級配置
      參數預設值說明
      apack.analytic_search.doc_concurrency.enabledfalse是否開啟查詢並發功能:
      • true:開啟
      • false:不開啟
      apack.analytic_search.doc_concurrency.concurrent.policy80%:4;90%:2查詢並發策略,格式為:閾值1:並發度1;閾值2:並發度2;...

      其中並發度n為節點CPU使用率小於閾值n時,並發查詢使用的並發度。例如,80%:4;90%:2表示節點的CPU使用率小於80%使用4並發,小於90%使用2並發,大於等於90%不使用並發。

      apack.analytic_search.doc_concurrency.min_support_doc10000使用查詢並發的索引的最少文檔數,索引文檔數低於該值則不使用查詢並發。
      apack.analytic_search.doc_concurrency.min_support_processors4使用查詢並發的節點的最少核心數,節點核心數低於該值則不使用查詢並發。
      apack.analytic_search.doc_concurrency.max_support_heap_usage80%使用查詢並發的節點的最高JVM heap使用率,節點JVM heap使用率高於該值則不使用查詢並發。
      apack.analytic_search.doc_concurrency.max_support_cpu_usage90%使用查詢並發的節點的最高CPU使用率,節點CPU使用率高於該值則不使用查詢並發。
    • 索引層級settings
      參數預設值說明
      index.apack.analytic_search.doc_concurrency.enabledtrue是否開啟查詢並發功能:
      • true:開啟
      • false:不開啟
      index.apack.analytic_search.doc_concurrency.allow_no_aggfalse是否對不帶agg的查詢使用查詢並發功能:
      • true:使用
      • false:不使用