From dea6cfb010c7b9bf3905328a096dc3cfdcccca2e 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, 25 Jun 2019 17:55:13 +0800 Subject: [PATCH] Change the statement column type from Keyword to Text. (#2944) * Use ids query method instead of get method for metrics persistence. #2933 * Query by alias name. * #2943 Change the statement column type from Keyword to Text. --- .../oap/server/core/analysis/topn/TopN.java | 2 +- .../oap/server/core/storage/annotation/Column.java | 14 ++++++++++++++ .../oap/server/core/storage/model/ModelColumn.java | 4 +++- .../server/core/storage/model/StorageModels.java | 2 +- .../elasticsearch/base/StorageEsInstaller.java | 5 +++++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/topn/TopN.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/topn/TopN.java index fae8298b6b..eede0197c5 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/topn/TopN.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/topn/TopN.java @@ -34,7 +34,7 @@ public abstract class TopN extends Record implements ComparableStorageData { public static final String TRACE_ID = "trace_id"; public static final String SERVICE_ID = "service_id"; - @Getter @Setter @Column(columnName = STATEMENT) private String statement; + @Getter @Setter @Column(columnName = STATEMENT, content = true) private String statement; @Getter @Setter @Column(columnName = LATENCY) private long latency; @Getter @Setter @Column(columnName = TRACE_ID) private String traceId; @Getter @Setter @Column(columnName = SERVICE_ID) private int serviceId; diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/Column.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/Column.java index df4a45a5a9..4e3f880d83 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/Column.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/Column.java @@ -29,9 +29,23 @@ import org.apache.skywalking.oap.server.core.query.sql.Function; public @interface Column { String columnName(); + /** + * The column value is used in metrics value query. + */ boolean isValue() default false; + /** + * The function is used in aggregation query. + */ Function function() default Function.None; + /** + * Match query means using analyzer(if storage have) to do key word match query. + */ boolean matchQuery() default false; + + /** + * The column is just saved, never used in query. + */ + boolean content() default false; } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelColumn.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelColumn.java index 763791b8a1..6627542357 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelColumn.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelColumn.java @@ -28,10 +28,12 @@ public class ModelColumn { private final ColumnName columnName; private final Class type; private final boolean matchQuery; + private final boolean content; - public ModelColumn(ColumnName columnName, Class type, boolean matchQuery) { + public ModelColumn(ColumnName columnName, Class type, boolean matchQuery, boolean content) { this.columnName = columnName; this.type = type; this.matchQuery = matchQuery; + this.content = content; } } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/StorageModels.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/StorageModels.java index 6e9f572c6f..2642523f1d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/StorageModels.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/StorageModels.java @@ -62,7 +62,7 @@ public class StorageModels implements IModelGetter, IModelSetter, IModelOverride for (Field field : fields) { if (field.isAnnotationPresent(Column.class)) { Column column = field.getAnnotation(Column.class); - modelColumns.add(new ModelColumn(new ColumnName(column.columnName()), field.getType(), column.matchQuery())); + modelColumns.add(new ModelColumn(new ColumnName(column.columnName()), field.getType(), column.matchQuery(), column.content())); if (logger.isDebugEnabled()) { logger.debug("The field named {} with the {} type", column.columnName(), field.getType()); } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/StorageEsInstaller.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/StorageEsInstaller.java index 7e9f006b2c..2661c8f18f 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/StorageEsInstaller.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/StorageEsInstaller.java @@ -125,6 +125,11 @@ public class StorageEsInstaller extends ModelInstaller { matchColumn.addProperty("type", "text"); matchColumn.addProperty("analyzer", "oap_analyzer"); properties.add(matchCName, matchColumn); + } else if (columnDefine.isContent()) { + JsonObject column = new JsonObject(); + column.addProperty("type", "text"); + column.addProperty("index", false); + properties.add(columnDefine.getColumnName().getName(), column); } else { JsonObject column = new JsonObject(); column.addProperty("type", columnTypeEsMapping.transform(columnDefine.getType())); -- GitLab