analytic-search插件是阿里云Elasticsearch团队自主开发的日志场景检索插件,提供Kibana Discover查询加速和查询并发两项功能,适用于日志检索和分析场景。
使用须知
analytic-search插件为系统默认插件,默认已安装且不可卸载,可在插件配置页面查看。使用该插件需要实例版本为7.10.0,内核版本为1.7.0及以上。
Kibana Discover查询加速
通过优化索引合并策略及Date_histogram执行计划策略,在没有查询条件或仅有一个查询条件时,大幅降低查询耗时。适用于日志检索场景,例如Kibana Discover中的无条件或单条件查询。
性能参考
测试环境:10 * 16核64 GB节点。某业务日志数据,一天600亿个文档,分成12个索引,每个索引60个分片。
查询条件 | SSD云盘 | 高效云盘 | OpenStore存储 |
没有查询条件 | 耗时降低96% | 耗时降低95% | 耗时降低94% |
一个查询条件 | 耗时降低88% | 耗时降低77% | 耗时降低85% |
多个查询条件 | 耗时降低8% | 耗时降低11% | 耗时降低14% |
开启Kibana Discover查询加速
创建索引时,在settings中配置index.sort按时间戳字段降序排列。以下示例仅供参考,实际使用时需按照业务字段名称调整时间戳字段名和排序。
PUT test_log
{
"settings": {
"index.points.same_sort_order_as_index_sort": true,
"index.sort.field": [
"@timestamp"
],
"index.sort.order": [
"desc"
]
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
}查询并发功能
通过实现召回过程的并发,提高资源利用率,召回阶段平均耗时降低50%。适用于查询QPS低、查询召回阶段耗时高、节点计算资源充足的场景。
性能参考
测试环境:3 * 16核64 GB OpenStore冷热共享计算型节点。某业务日志数据,单索引1.6 TB,60亿个文档,60个分片。查询条件为3个TermQuery(and) + TimeRange + Sort + Datehistogram,单shard命中1000w(命中率10%)。
测试结果:
单shard查询耗时降低65%。
多shard查询耗时降低53%。
开启查询并发
执行以下命令开启查询并发功能:
PUT _cluster/settings
{
"persistent": {
"apack.analytic_search.doc_concurrency.enabled": "true"
}
}开启后,新接收到的查询任务将按默认的并发策略执行。可通过以下参数调整并发行为。
集群级别配置
参数 | 默认值 | 说明 |
apack.analytic_search.doc_concurrency.enabled | false | 是否开启查询并发功能:true(开启)或false(不开启)。 |
apack.analytic_search.doc_concurrency.concurrent.policy | 80%:4;90%:2 | 查询并发策略,格式为 |
apack.analytic_search.doc_concurrency.min_support_doc | 10000 | 使用查询并发的索引的最少文档数,低于该值则不使用查询并发。 |
apack.analytic_search.doc_concurrency.min_support_processors | 4 | 使用查询并发的节点的最少核数,低于该值则不使用查询并发。 |
apack.analytic_search.doc_concurrency.max_support_heap_usage | 80% | 使用查询并发的节点的最高JVM heap使用率,高于该值则不使用查询并发。 |
apack.analytic_search.doc_concurrency.max_support_cpu_usage | 90 | 使用查询并发的节点的最高CPU使用率,值为整数表示百分比,高于该值则不使用查询并发。 |
索引级别配置
参数 | 默认值 | 说明 |
index.apack.analytic_search.doc_concurrency.enabled | true | 是否对该索引开启查询并发功能:true(开启)或false(不开启)。 |