From 1a49f7053c966aecd2271a40017e13f2ed54c6b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E5=8B=87=E5=8D=87=20pengys?= <8082209@qq.com> Date: Tue, 9 Oct 2018 21:58:26 +0800 Subject: [PATCH] Get the value column name from value column annotation manager. (#1737) --- .../core/query/AggregationQueryService.java | 21 +++++----- .../storage/query/IAggregationQueryDAO.java | 12 +++--- .../query/AggregationQueryEsDAO.java | 39 ++++++++++--------- 3 files changed, 38 insertions(+), 34 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java index f4873681a..6e247c6f0 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.cache.*; import org.apache.skywalking.oap.server.core.query.entity.*; import org.apache.skywalking.oap.server.core.register.*; import org.apache.skywalking.oap.server.core.storage.StorageModule; +import org.apache.skywalking.oap.server.core.storage.annotation.ValueColumnIds; import org.apache.skywalking.oap.server.core.storage.query.IAggregationQueryDAO; import org.apache.skywalking.oap.server.library.module.*; import org.apache.skywalking.oap.server.library.module.Service; @@ -48,9 +49,9 @@ public class AggregationQueryService implements Service { return aggregationQueryDAO; } - public List getServiceTopN(final String name, final int topN, final Step step, final long startTB, + public List getServiceTopN(final String indName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException { - List topNEntities = getAggregationQueryDAO().getServiceTopN(name, topN, step, startTB, endTB, order); + List topNEntities = getAggregationQueryDAO().getServiceTopN(indName, ValueColumnIds.INSTANCE.getValueCName(indName), topN, step, startTB, endTB, order); for (TopNEntity entity : topNEntities) { ServiceInventory inventory = moduleManager.find(CoreModule.NAME).getService(ServiceInventoryCache.class).get(Integer.valueOf(entity.getId())); if (inventory != null) { @@ -60,9 +61,9 @@ public class AggregationQueryService implements Service { return topNEntities; } - public List getAllServiceInstanceTopN(final String name, final int topN, final Step step, + public List getAllServiceInstanceTopN(final String indName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException { - List topNEntities = getAggregationQueryDAO().getAllServiceInstanceTopN(name, topN, step, startTB, endTB, order); + List topNEntities = getAggregationQueryDAO().getAllServiceInstanceTopN(indName, ValueColumnIds.INSTANCE.getValueCName(indName), topN, step, startTB, endTB, order); for (TopNEntity entity : topNEntities) { ServiceInstanceInventory inventory = moduleManager.find(CoreModule.NAME).getService(ServiceInstanceInventoryCache.class).get(Integer.valueOf(entity.getId())); if (inventory != null) { @@ -72,9 +73,9 @@ public class AggregationQueryService implements Service { return topNEntities; } - public List getServiceInstanceTopN(final int serviceId, final String name, final int topN, + public List getServiceInstanceTopN(final int serviceId, final String indName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException { - List topNEntities = getAggregationQueryDAO().getServiceInstanceTopN(serviceId, name, topN, step, startTB, endTB, order); + List topNEntities = getAggregationQueryDAO().getServiceInstanceTopN(serviceId, indName, ValueColumnIds.INSTANCE.getValueCName(indName), topN, step, startTB, endTB, order); for (TopNEntity entity : topNEntities) { ServiceInstanceInventory inventory = moduleManager.find(CoreModule.NAME).getService(ServiceInstanceInventoryCache.class).get(Integer.valueOf(entity.getId())); if (inventory != null) { @@ -84,9 +85,9 @@ public class AggregationQueryService implements Service { return topNEntities; } - public List getAllEndpointTopN(final String name, final int topN, final Step step, + public List getAllEndpointTopN(final String indName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException { - List topNEntities = getAggregationQueryDAO().getAllEndpointTopN(name, topN, step, startTB, endTB, order); + List topNEntities = getAggregationQueryDAO().getAllEndpointTopN(indName, ValueColumnIds.INSTANCE.getValueCName(indName), topN, step, startTB, endTB, order); for (TopNEntity entity : topNEntities) { EndpointInventory inventory = moduleManager.find(CoreModule.NAME).getService(EndpointInventoryCache.class).get(Integer.valueOf(entity.getId())); if (inventory != null) { @@ -96,9 +97,9 @@ public class AggregationQueryService implements Service { return topNEntities; } - public List getEndpointTopN(final int serviceId, final String name, final int topN, + public List getEndpointTopN(final int serviceId, final String indName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException { - List topNEntities = getAggregationQueryDAO().getEndpointTopN(serviceId, name, topN, step, startTB, endTB, order); + List topNEntities = getAggregationQueryDAO().getEndpointTopN(serviceId, indName, ValueColumnIds.INSTANCE.getValueCName(indName), topN, step, startTB, endTB, order); for (TopNEntity entity : topNEntities) { EndpointInventory inventory = moduleManager.find(CoreModule.NAME).getService(EndpointInventoryCache.class).get(Integer.valueOf(entity.getId())); if (inventory != null) { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAggregationQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAggregationQueryDAO.java index 1310c4e3f..932aa3ee8 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAggregationQueryDAO.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAggregationQueryDAO.java @@ -28,18 +28,20 @@ import org.apache.skywalking.oap.server.core.storage.DAO; */ public interface IAggregationQueryDAO extends DAO { - List getServiceTopN(final String name, final int topN, final Step step, final long startTB, + List getServiceTopN(final String indName, String valueCName, final int topN, final Step step, + final long startTB, final long endTB, final Order order) throws IOException; - List getAllServiceInstanceTopN(final String name, final int topN, final Step step, + List getAllServiceInstanceTopN(final String indName, String valueCName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException; - List getServiceInstanceTopN(final int serviceId, final String name, final int topN, + List getServiceInstanceTopN(final int serviceId, final String indName, String valueCName, + final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException; - List getAllEndpointTopN(final String name, final int topN, final Step step, + List getAllEndpointTopN(final String indName, String valueCName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException; - List getEndpointTopN(final int serviceId, final String name, final int topN, + List getEndpointTopN(final int serviceId, final String indName, String valueCName, final int topN, final Step step, final long startTB, final long endTB, final Order order) throws IOException; } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AggregationQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AggregationQueryEsDAO.java index 2868da61b..eecd4ce1e 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AggregationQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AggregationQueryEsDAO.java @@ -44,27 +44,27 @@ public class AggregationQueryEsDAO extends EsDAO implements IAggregationQueryDAO } @Override - public List getServiceTopN(String name, int topN, Step step, long startTB, + public List getServiceTopN(String indName, String valueCName, int topN, Step step, long startTB, long endTB, Order order) throws IOException { - String indexName = TimePyramidTableNameBuilder.build(step, name); + String indexName = TimePyramidTableNameBuilder.build(step, indName); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); sourceBuilder.query(QueryBuilders.rangeQuery(Indicator.TIME_BUCKET).lte(endTB).gte(startTB)); - return aggregation(indexName, sourceBuilder, topN, order); + return aggregation(indexName, valueCName, sourceBuilder, topN, order); } - @Override public List getAllServiceInstanceTopN(String name, int topN, Step step, + @Override public List getAllServiceInstanceTopN(String indName, String valueCName, int topN, Step step, long startTB, long endTB, Order order) throws IOException { - String indexName = TimePyramidTableNameBuilder.build(step, name); + String indexName = TimePyramidTableNameBuilder.build(step, indName); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); sourceBuilder.query(QueryBuilders.rangeQuery(Indicator.TIME_BUCKET).lte(endTB).gte(startTB)); - return aggregation(indexName, sourceBuilder, topN, order); + return aggregation(indexName, valueCName, sourceBuilder, topN, order); } - @Override public List getServiceInstanceTopN(int serviceId, String name, int topN, + @Override public List getServiceInstanceTopN(int serviceId, String indName, String valueCName, int topN, Step step, long startTB, long endTB, Order order) throws IOException { - String indexName = TimePyramidTableNameBuilder.build(step, name); + String indexName = TimePyramidTableNameBuilder.build(step, indName); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); @@ -74,23 +74,23 @@ public class AggregationQueryEsDAO extends EsDAO implements IAggregationQueryDAO boolQueryBuilder.must().add(QueryBuilders.rangeQuery(Indicator.TIME_BUCKET).lte(endTB).gte(startTB)); boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInstanceInventory.SERVICE_ID, serviceId)); - return aggregation(indexName, sourceBuilder, topN, order); + return aggregation(indexName, valueCName, sourceBuilder, topN, order); } @Override - public List getAllEndpointTopN(String name, int topN, Step step, long startTB, + public List getAllEndpointTopN(String indName, String valueCName, int topN, Step step, long startTB, long endTB, Order order) throws IOException { - String indexName = TimePyramidTableNameBuilder.build(step, name); + String indexName = TimePyramidTableNameBuilder.build(step, indName); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); sourceBuilder.query(QueryBuilders.rangeQuery(Indicator.TIME_BUCKET).lte(endTB).gte(startTB)); - return aggregation(indexName, sourceBuilder, topN, order); + return aggregation(indexName, valueCName, sourceBuilder, topN, order); } @Override - public List getEndpointTopN(int serviceId, String name, int topN, Step step, + public List getEndpointTopN(int serviceId, String indName, String valueCName, int topN, Step step, long startTB, long endTB, Order order) throws IOException { - String indexName = TimePyramidTableNameBuilder.build(step, name); + String indexName = TimePyramidTableNameBuilder.build(step, indName); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); @@ -100,10 +100,11 @@ public class AggregationQueryEsDAO extends EsDAO implements IAggregationQueryDAO boolQueryBuilder.must().add(QueryBuilders.rangeQuery(Indicator.TIME_BUCKET).lte(endTB).gte(startTB)); boolQueryBuilder.must().add(QueryBuilders.termQuery(EndpointInventory.SERVICE_ID, serviceId)); - return aggregation(indexName, sourceBuilder, topN, order); + return aggregation(indexName, valueCName, sourceBuilder, topN, order); } - private List aggregation(String indexName, SearchSourceBuilder sourceBuilder, int topN, + private List aggregation(String indexName, String valueCName, SearchSourceBuilder sourceBuilder, + int topN, Order order) throws IOException { boolean asc = false; if (order.equals(Order.ASC)) { @@ -113,10 +114,10 @@ public class AggregationQueryEsDAO extends EsDAO implements IAggregationQueryDAO TermsAggregationBuilder aggregationBuilder = AggregationBuilders .terms(Indicator.ENTITY_ID) .field(Indicator.ENTITY_ID) - .order(BucketOrder.aggregation("value", asc)) + .order(BucketOrder.aggregation(valueCName, asc)) .size(topN) .subAggregation( - AggregationBuilders.avg("value").field("value") + AggregationBuilders.avg(valueCName).field(valueCName) ); sourceBuilder.aggregation(aggregationBuilder); @@ -127,7 +128,7 @@ public class AggregationQueryEsDAO extends EsDAO implements IAggregationQueryDAO for (Terms.Bucket termsBucket : idTerms.getBuckets()) { TopNEntity topNEntity = new TopNEntity(); topNEntity.setId(termsBucket.getKeyAsString()); - Avg value = termsBucket.getAggregations().get("value"); + Avg value = termsBucket.getAggregations().get(valueCName); topNEntity.setValue((int)value.getValue()); topNEntities.add(topNEntity); }