diff options
| author | wangkuan <[email protected]> | 2024-02-27 11:46:37 +0800 |
|---|---|---|
| committer | wangkuan <[email protected]> | 2024-02-27 11:46:37 +0800 |
| commit | e1334d60e9421d18404541186c5ef6212a34c6e0 (patch) | |
| tree | 3a860ddbaad645be3e478b47d262b461dadcc9b4 | |
| parent | e0e35051f46744beba606bd5aea179a39e54665d (diff) | |
[improve][core]domain函数优化,优先级高的字段配置在前面可以减少不必要的循环次数。v1.1.0release/1.1.0-release
| -rw-r--r-- | groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java index 7223eab..fd5299a 100644 --- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java +++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java @@ -11,6 +11,8 @@ import org.apache.flink.api.common.functions.RuntimeContext; import java.util.List; +import static com.geedgenetworks.utils.FormatUtils.getTopPrivateDomain; + @Slf4j public class Domain implements UDF { @@ -50,35 +52,49 @@ public class Domain implements UDF { @Override public Event evaluate(Event event) { String domain = ""; - for (String lookupField : lookupFields){ - - if(event.getExtractedFields().containsKey(lookupField)){ - - switch (option) { - case "TOP_LEVEL_DOMAIN": + switch (option) { + case "TOP_LEVEL_DOMAIN": + for (String lookupField : lookupFields){ + if(event.getExtractedFields().containsKey(lookupField)) { domain = - FormatUtils.getTopPrivateDomain( + getTopPrivateDomain( (String) event.getExtractedFields() .get(lookupField)); - if(domain.contains(".")) { + if (domain.contains(".")) { domain = domain.substring(domain.indexOf(".") + 1); } - break; - case "FIRST_SIGNIFICANT_SUBDOMAIN": + if(!domain.isEmpty()){ + break; + } + } + } + break; + case "FIRST_SIGNIFICANT_SUBDOMAIN": + for (String lookupField : lookupFields){ + if(event.getExtractedFields().containsKey(lookupField)) { domain = - FormatUtils.getTopPrivateDomain( + getTopPrivateDomain( (String) event.getExtractedFields() .get(lookupField)); + } + if(!domain.isEmpty()){ break; - case "FQDN": - domain = (String) event.getExtractedFields() - .get(lookupField); - break; - + } } - } + break; + case "FQDN": + for (String lookupField : lookupFields) { + if (event.getExtractedFields().containsKey(lookupField)) { + domain = (String) event.getExtractedFields() + .get(lookupField); + } + if(!domain.isEmpty()){ + break; + } + } + break; } event.getExtractedFields().put(outputFieldName, domain); return event; |
