|
9 | 9 |
|
10 | 10 | package org.elasticsearch.index.mapper; |
11 | 11 |
|
| 12 | +import org.apache.logging.log4j.LogManager; |
| 13 | +import org.apache.logging.log4j.Logger; |
12 | 14 | import org.apache.lucene.search.IndexSearcher; |
13 | 15 | import org.apache.lucene.search.Query; |
14 | 16 | import org.apache.lucene.search.join.BitSetProducer; |
15 | | -import org.elasticsearch.common.util.FeatureFlag; |
| 17 | +import org.elasticsearch.core.Booleans; |
16 | 18 | import org.elasticsearch.index.IndexVersion; |
17 | 19 | import org.elasticsearch.index.IndexVersions; |
18 | 20 | import org.elasticsearch.index.query.SearchExecutionContext; |
|
26 | 28 | * the field name for removal from _source. |
27 | 29 | */ |
28 | 30 | public abstract class InferenceMetadataFieldsMapper extends MetadataFieldMapper { |
29 | | - public static final FeatureFlag INFERENCE_METADATA_FIELDS_FEATURE_FLAG = new FeatureFlag("inference_metadata_fields"); |
| 31 | + public static class SystemProperty { |
| 32 | + private static final Logger logger = LogManager.getLogger(SystemProperty.class); |
| 33 | + |
| 34 | + private final boolean enabled; |
| 35 | + |
| 36 | + private SystemProperty(String name) { |
| 37 | + String propertyName = "es." + name; |
| 38 | + this.enabled = parseSystemProperty(propertyName, false); |
| 39 | + if (this.enabled) { |
| 40 | + logger.info("Feature " + name + " (via system property '" + propertyName + "') is enabled"); |
| 41 | + } else { |
| 42 | + logger.debug("Feature " + name + " (via system property '" + propertyName + "') is disabled"); |
| 43 | + } |
| 44 | + } |
| 45 | + |
| 46 | + private boolean parseSystemProperty(String propertyName, boolean defaultValue) { |
| 47 | + final String propertyValue = System.getProperty(propertyName); |
| 48 | + logger.trace("System property [{}] is set to [{}]", propertyName, propertyValue); |
| 49 | + try { |
| 50 | + return Booleans.parseBoolean(propertyValue, defaultValue); |
| 51 | + } catch (IllegalArgumentException e) { |
| 52 | + throw new IllegalArgumentException("Invalid value [" + propertyValue + "] for system property [" + propertyName + "]", e); |
| 53 | + } |
| 54 | + } |
| 55 | + |
| 56 | + public boolean isEnabled() { |
| 57 | + return enabled; |
| 58 | + } |
| 59 | + } |
| 60 | + |
| 61 | + public static final SystemProperty INFERENCE_METADATA_FIELDS_SYSTEM_PROPERTY = new SystemProperty("inference_metadata_fields"); |
30 | 62 |
|
31 | 63 | public static final String NAME = "_inference_fields"; |
32 | 64 | public static final String CONTENT_TYPE = "_inference_fields"; |
@@ -61,6 +93,6 @@ public abstract ValueFetcher valueFetcher( |
61 | 93 | } |
62 | 94 |
|
63 | 95 | public static boolean isEnabled(IndexVersion indexVersion) { |
64 | | - return indexVersion.onOrAfter(IndexVersions.INFERENCE_METADATA_FIELDS) && INFERENCE_METADATA_FIELDS_FEATURE_FLAG.isEnabled(); |
| 96 | + return indexVersion.onOrAfter(IndexVersions.INFERENCE_METADATA_FIELDS) && INFERENCE_METADATA_FIELDS_SYSTEM_PROPERTY.isEnabled(); |
65 | 97 | } |
66 | 98 | } |
0 commit comments