analytic-search插件是阿里云Elasticsearch團隊自主開發(fā)的日志場景檢索插件。通過該插件,您可以實現(xiàn)Kibana Discover查詢加速,支持通過開啟時間字段index.sort,在特定查詢條件下,降低查詢耗時;支持開啟查詢并發(fā)功能,大幅降低查詢耗時。本文介紹如何使用analytic-search插件。

背景信息

analytic-search插件的主要功能以及各功能的適用場景和性能測試信息如下:

Kibana Discover查詢加速功能

  • 適用場景:日志檢索場景。例如Kibana Discover中的無條件或單條件查詢。
  • 功能優(yōu)勢:通過優(yōu)化索引合并策略及Date_histogram執(zhí)行計劃策略,在沒有查詢條件或者僅有一個查詢條件時,大幅度降低查詢耗時(日增量>1 TB數(shù)據(jù)量的場景下,分鐘級查詢可優(yōu)化至5s內(nèi))。
  • 性能測試信息:
    • 測試環(huán)境
      • 節(jié)點:10 * 16核64 GB。
      • 數(shù)據(jù)集:某業(yè)務(wù)日志數(shù)據(jù),一天600億個文檔,分成12個索引,每個索引60個分片。
    • 開啟Kibana Discover查詢加速后,不同存儲介質(zhì)的性能表現(xiàn)如下:
      查詢條件 SSD云盤 高效云盤 OpenStore存儲
      沒有查詢條件 耗時降低96% 耗時降低95% 耗時降低94%
      一個查詢條件 耗時降低88% 耗時降低77% 耗時降低85%
      多個查詢條件 耗時降低8% 耗時降低11% 耗時降低14%

查詢并發(fā)功能

  • 適用場景:查詢QPS低,查詢召回階段耗時高,節(jié)點計算資源充足的場景。
  • 功能優(yōu)勢:通過實現(xiàn)召回過程的并發(fā),提高資源利用率,召回階段平均耗時降低50%。
  • 性能測試信息:
    • 測試環(huán)境
      • 節(jié)點:3 * 16核64 GB OpenStore冷熱共享計算型。
      • 數(shù)據(jù)集:某業(yè)務(wù)日志數(shù)據(jù),單索引1.6 TB,60億個文檔,60個分片。
      • 查詢:3 TermQuery(and) + TimeRange + Sort + Datehistogram,單shard命中1000w(命中率10%)。
    • 測試結(jié)果:
      • 單shard查詢耗時降低65%。
      • 多shard查詢耗時降低53%。

前提條件

已創(chuàng)建阿里云Elasticsearch實例,版本為7.10.0且內(nèi)核版本為1.7.0及以上。本文以阿里云Elasticsearch 7.10.0為例介紹,創(chuàng)建實例的方法請參見創(chuàng)建阿里云Elasticsearch實例。
說明 analytic-search插件默認(rèn)已安裝,不可卸載,您可在插件配置頁面查看。

開啟Kibana Discover查詢加速

創(chuàng)建索引時,在settingsmappings中增加如下配置即可。
說明 以下示例僅供參考。實際使用時,您需要按照業(yè)務(wù)實際字段名稱調(diào)整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"
      }
    }
  }
}

使用查詢并發(fā)功能

  1. 登錄目標(biāo)阿里云Elasticsearch實例的Kibana控制臺,根據(jù)頁面提示進入Kibana主頁。
    登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺
    說明 本文以阿里云Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請以實際界面為準(zhǔn)。
  2. 單擊右上角的Dev tools。
  3. Console頁簽,執(zhí)行以下腳本,開啟并發(fā)查詢。
    PUT _cluster/settings
    {
      "persistent": {
        "apack.analytic_search.doc_concurrency.enabled": "true"
      }
    }
    集群設(shè)置以上配置后,阿里云Elasticsearch新接收到的查詢?nèi)蝿?wù)將會按默認(rèn)的并發(fā)策略執(zhí)行,您可以通過調(diào)整并發(fā)相關(guān)配置來控制并發(fā)查詢行為,相關(guān)的配置如下。
    • 集群級別配置
      參數(shù) 默認(rèn)值 說明
      apack.analytic_search.doc_concurrency.enabled false 是否開啟查詢并發(fā)功能:
      • true:開啟
      • false:不開啟
      apack.analytic_search.doc_concurrency.concurrent.policy 80%:4;90%:2 查詢并發(fā)策略,格式為:閾值1:并發(fā)度1;閾值2:并發(fā)度2;...。

      其中并發(fā)度n為節(jié)點CPU使用率小于閾值n時,并發(fā)查詢使用的并發(fā)度。例如,80%:4;90%:2表示節(jié)點的CPU使用率小于80%使用4并發(fā),小于90%使用2并發(fā),大于等于90%不使用并發(fā)。

      apack.analytic_search.doc_concurrency.min_support_doc 10000 使用查詢并發(fā)的索引的最少文檔數(shù),索引文檔數(shù)低于該值則不使用查詢并發(fā)。
      apack.analytic_search.doc_concurrency.min_support_processors 4 使用查詢并發(fā)的節(jié)點的最少核數(shù),節(jié)點核數(shù)低于該值則不使用查詢并發(fā)。
      apack.analytic_search.doc_concurrency.max_support_heap_usage 80% 使用查詢并發(fā)的節(jié)點的最高JVM heap使用率,節(jié)點JVM heap使用率高于該值則不使用查詢并發(fā)。
      apack.analytic_search.doc_concurrency.max_support_cpu_usage 90% 使用查詢并發(fā)的節(jié)點的最高CPU使用率,節(jié)點CPU使用率高于該值則不使用查詢并發(fā)。
    • 索引級別settings
      參數(shù) 默認(rèn)值 說明
      index.apack.analytic_search.doc_concurrency.enabled true 是否開啟查詢并發(fā)功能:
      • true:開啟
      • false:不開啟
      index.apack.analytic_search.doc_concurrency.allow_no_agg false 是否對不帶agg的查詢使用查詢并發(fā)功能:
      • true:使用
      • false:不使用