Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
c5bde6d3
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
c5bde6d3
编写于
5月 05, 2022
作者:
H
Hper
提交者:
GitHub
5月 05, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve the performance of TermsAggregation (#8959)
上级
c53d242a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
76 addition
and
5 deletion
+76
-5
docs/en/changes/changes.md
docs/en/changes/changes.md
+2
-0
oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/requests/search/aggregation/TermsAggregation.java
...csearch/requests/search/aggregation/TermsAggregation.java
+8
-0
oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/requests/search/aggregation/TermsAggregationBuilder.java
.../requests/search/aggregation/TermsAggregationBuilder.java
+46
-1
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AggregationQueryEsDAO.java
...age/plugin/elasticsearch/query/AggregationQueryEsDAO.java
+3
-0
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java
...storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java
+2
-0
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TopologyQueryEsDAO.java
...torage/plugin/elasticsearch/query/TopologyQueryEsDAO.java
+15
-4
未找到文件。
docs/en/changes/changes.md
浏览文件 @
c5bde6d3
...
...
@@ -39,6 +39,8 @@
*
Add the support eBPF profiling field into the process entity.
*
E2E: fix log test miss verify LAL and metrics.
*
Enhance Converter mechanism in kernel level to make BanyanDB native feature more effective.
*
Add TermsAggregation properties collect_mode and execution_hint.
*
Add "execution_hint": "map", "collect_mode": "breadth_first" for aggregation and topology query to improve 5-10x performance.
#### UI
...
...
oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/requests/search/aggregation/TermsAggregation.java
浏览文件 @
c5bde6d3
...
...
@@ -36,6 +36,8 @@ public final class TermsAggregation extends Aggregation {
private
final
BucketOrder
order
;
private
final
Integer
size
;
private
final
ImmutableMap
<
String
,
Aggregation
>
aggregations
;
private
final
TermsAggregationBuilder
.
CollectMode
collectMode
;
private
final
TermsAggregationBuilder
.
ExecutionHint
executionHint
;
@Override
public
String
name
()
{
...
...
@@ -58,6 +60,12 @@ public final class TermsAggregation extends Aggregation {
if
(
value
.
getOrder
()
!=
null
)
{
writeOrder
(
value
,
gen
);
}
if
(
value
.
getCollectMode
()
!=
null
)
{
gen
.
writeStringField
(
"collect_mode"
,
value
.
getCollectMode
().
value
);
}
if
(
value
.
getExecutionHint
()
!=
null
)
{
gen
.
writeStringField
(
"execution_hint"
,
value
.
getExecutionHint
().
value
);
}
}
gen
.
writeEndObject
();
...
...
oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/requests/search/aggregation/TermsAggregationBuilder.java
浏览文件 @
c5bde6d3
...
...
@@ -31,6 +31,9 @@ public final class TermsAggregationBuilder implements AggregationBuilder {
private
Integer
size
;
private
ImmutableMap
.
Builder
<
String
,
Aggregation
>
subAggregations
;
private
CollectMode
collectMode
;
private
ExecutionHint
executionHint
;
TermsAggregationBuilder
(
final
String
name
)
{
checkArgument
(!
Strings
.
isNullOrEmpty
(
name
),
"name cannot be blank"
);
this
.
name
=
name
;
...
...
@@ -65,6 +68,18 @@ public final class TermsAggregationBuilder implements AggregationBuilder {
return
subAggregation
(
subAggregationBuilder
.
build
());
}
public
TermsAggregationBuilder
collectMode
(
CollectMode
collectMode
)
{
requireNonNull
(
collectMode
,
"collectMode"
);
this
.
collectMode
=
collectMode
;
return
this
;
}
public
TermsAggregationBuilder
executionHint
(
ExecutionHint
executionHint
)
{
requireNonNull
(
executionHint
,
"executionHint"
);
this
.
executionHint
=
executionHint
;
return
this
;
}
@Override
public
TermsAggregation
build
()
{
ImmutableMap
<
String
,
Aggregation
>
subAggregations
;
...
...
@@ -74,7 +89,7 @@ public final class TermsAggregationBuilder implements AggregationBuilder {
subAggregations
=
this
.
subAggregations
.
build
();
}
return
new
TermsAggregation
(
name
,
field
,
order
,
size
,
subAggregations
name
,
field
,
order
,
size
,
subAggregations
,
collectMode
,
executionHint
);
}
...
...
@@ -84,4 +99,34 @@ public final class TermsAggregationBuilder implements AggregationBuilder {
}
return
subAggregations
;
}
public
enum
CollectMode
{
BREADTH_FIRST
(
"breadth_first"
),
DEPTH_FIRST
(
"depth_first"
);
final
String
value
;
CollectMode
(
final
String
value
)
{
this
.
value
=
value
;
}
@Override
public
String
toString
()
{
return
value
;
}
}
public
enum
ExecutionHint
{
GLOBAL_ORDINALS
(
"global_ordinals"
),
MAP
(
"map"
);
final
String
value
;
ExecutionHint
(
final
String
value
)
{
this
.
value
=
value
;
}
@Override
public
String
toString
()
{
return
value
;
}
}
}
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AggregationQueryEsDAO.java
浏览文件 @
c5bde6d3
...
...
@@ -28,6 +28,7 @@ import org.apache.skywalking.library.elasticsearch.requests.search.Search;
import
org.apache.skywalking.library.elasticsearch.requests.search.SearchBuilder
;
import
org.apache.skywalking.library.elasticsearch.requests.search.aggregation.Aggregation
;
import
org.apache.skywalking.library.elasticsearch.requests.search.aggregation.BucketOrder
;
import
org.apache.skywalking.library.elasticsearch.requests.search.aggregation.TermsAggregationBuilder
;
import
org.apache.skywalking.library.elasticsearch.response.search.SearchResponse
;
import
org.apache.skywalking.oap.server.core.analysis.metrics.Metrics
;
import
org.apache.skywalking.oap.server.core.query.enumeration.Order
;
...
...
@@ -105,6 +106,8 @@ public class AggregationQueryEsDAO extends EsDAO implements IAggregationQueryDAO
.
order
(
BucketOrder
.
aggregation
(
valueColumnName
,
asc
))
.
size
(
condition
.
getTopN
())
.
subAggregation
(
Aggregation
.
avg
(
valueColumnName
).
field
(
valueColumnName
))
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
)
.
build
());
final
SearchResponse
response
=
getClient
().
search
(
tableName
,
search
.
build
());
...
...
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricsQueryEsDAO.java
浏览文件 @
c5bde6d3
...
...
@@ -70,6 +70,8 @@ public class MetricsQueryEsDAO extends EsDAO implements IMetricsQueryDAO {
final
TermsAggregationBuilder
entityIdAggregation
=
Aggregation
.
terms
(
Metrics
.
ENTITY_ID
)
.
field
(
Metrics
.
ENTITY_ID
)
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
)
.
size
(
1
);
functionAggregation
(
function
,
entityIdAggregation
,
valueColumnName
);
...
...
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TopologyQueryEsDAO.java
浏览文件 @
c5bde6d3
...
...
@@ -26,6 +26,7 @@ import org.apache.skywalking.library.elasticsearch.requests.search.Query;
import
org.apache.skywalking.library.elasticsearch.requests.search.Search
;
import
org.apache.skywalking.library.elasticsearch.requests.search.SearchBuilder
;
import
org.apache.skywalking.library.elasticsearch.requests.search.aggregation.Aggregation
;
import
org.apache.skywalking.library.elasticsearch.requests.search.aggregation.TermsAggregationBuilder
;
import
org.apache.skywalking.library.elasticsearch.response.search.SearchResponse
;
import
org.apache.skywalking.oap.server.core.UnexpectedException
;
import
org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint.EndpointRelationServerSideMetrics
;
...
...
@@ -206,7 +207,11 @@ public class TopologyQueryEsDAO extends EsDAO implements ITopologyQueryDAO {
.
terms
(
Metrics
.
ENTITY_ID
).
field
(
Metrics
.
ENTITY_ID
)
.
subAggregation
(
Aggregation
.
terms
(
ServiceRelationServerSideMetrics
.
COMPONENT_ID
)
.
field
(
ServiceRelationServerSideMetrics
.
COMPONENT_ID
))
.
field
(
ServiceRelationServerSideMetrics
.
COMPONENT_ID
)
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
))
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
)
.
size
(
1000
));
final
String
index
=
...
...
@@ -242,8 +247,11 @@ public class TopologyQueryEsDAO extends EsDAO implements ITopologyQueryDAO {
.
terms
(
Metrics
.
ENTITY_ID
).
field
(
Metrics
.
ENTITY_ID
)
.
subAggregation
(
Aggregation
.
terms
(
ServiceInstanceRelationServerSideMetrics
.
COMPONENT_ID
)
.
field
(
ServiceInstanceRelationServerSideMetrics
.
COMPONENT_ID
))
.
field
(
ServiceInstanceRelationServerSideMetrics
.
COMPONENT_ID
)
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
))
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
)
.
size
(
1000
));
final
String
index
=
...
...
@@ -273,7 +281,10 @@ public class TopologyQueryEsDAO extends EsDAO implements ITopologyQueryDAO {
private
List
<
Call
.
CallDetail
>
loadEndpoint
(
SearchBuilder
sourceBuilder
,
String
indexName
,
DetectPoint
detectPoint
)
{
sourceBuilder
.
aggregation
(
Aggregation
.
terms
(
Metrics
.
ENTITY_ID
).
field
(
Metrics
.
ENTITY_ID
).
size
(
1000
));
Aggregation
.
terms
(
Metrics
.
ENTITY_ID
).
field
(
Metrics
.
ENTITY_ID
)
.
executionHint
(
TermsAggregationBuilder
.
ExecutionHint
.
MAP
)
.
collectMode
(
TermsAggregationBuilder
.
CollectMode
.
BREADTH_FIRST
)
.
size
(
1000
));
final
String
index
=
IndexController
.
LogicIndicesRegister
.
getPhysicalTableName
(
indexName
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录