diff --git a/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticConfig.java b/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticConfig.java index ba201fba7c..486a839a99 100644 --- a/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticConfig.java +++ b/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticConfig.java @@ -181,6 +181,17 @@ default String apiKeyCredentials() { return getSecret(this, "apiKeyCredentials").orElse(null); } + /** + * Enable {@literal _source} in the index template. + * Default is: {@code false} + * + * @return whether {@literal _source} will be enabled in the index template + * @since 2.0.0 + */ + default boolean enableSource() { + return getBoolean(this, "enableSource").orElse(false); + } + @Override default Validated validate() { return checkAll(this, diff --git a/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticMeterRegistry.java b/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticMeterRegistry.java index d030042ec7..9670923914 100644 --- a/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticMeterRegistry.java +++ b/implementations/micrometer-registry-elastic/src/main/java/io/micrometer/elastic/ElasticMeterRegistry.java @@ -37,8 +37,8 @@ import java.util.Optional; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; +import java.util.function.BiFunction; import java.util.function.Consumer; -import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -100,11 +100,11 @@ public class ElasticMeterRegistry extends StepMeterRegistry { " \"index\": false\n" + " }\n" + "}"; - private static final Function TEMPLATE_BODY_AFTER_VERSION_7 = (indexPrefix) -> "{\n" + + private static final BiFunction TEMPLATE_BODY_AFTER_VERSION_7 = (indexPrefix, enableSource) -> "{\n" + " \"index_patterns\": [\"" + indexPrefix + "*\"],\n" + " \"mappings\": {\n" + " \"_source\": {\n" + - " \"enabled\": false\n" + + " \"enabled\": " + enableSource + "\n" + " },\n" + TEMPLATE_PROPERTIES + " }\n" + "}"; @@ -192,7 +192,7 @@ private void createIndexTemplateIfNeeded() { } private String getTemplateBody() { - return TEMPLATE_BODY_AFTER_VERSION_7.apply(config.index() + config.indexDateSeparator()); + return TEMPLATE_BODY_AFTER_VERSION_7.apply(config.index() + config.indexDateSeparator(), config.enableSource()); } private HttpSender.Request.Builder connect(HttpSender.Method method, String uri) { @@ -212,6 +212,10 @@ private HttpSender.Request.Builder authentication(HttpSender.Request.Builder req protected void publish() { createIndexTemplateIfNeeded(); + if (config.enableSource()) { + logger.warn("'_source' field is enabled. Disable '_source' field to save space and reduce I/O."); + } + String uri = config.host() + "/" + indexName() + "/_bulk"; for (List batch : MeterPartition.partition(this, config.batchSize())) { try {