Introduce 'elasticsearch.codec' config A new config 'elasticsearch.codec' is added which allows us to set the codec during index creation time. It defaults to 'default'. Based on Elasticsearch docs[1], the default codec offers the best performance. [1] https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#_static_index_settings Change-Id: I1861218d3498ee7cebca1084636a35c815b1c0e6
diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java index e544d9f..2a5fcde 100644 --- a/src/main/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java +++ b/src/main/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java
@@ -43,9 +43,11 @@ static final String KEY_NUMBER_OF_SHARDS = "numberOfShards"; static final String KEY_NUMBER_OF_REPLICAS = "numberOfReplicas"; static final String KEY_MAX_RESULT_WINDOW = "maxResultWindow"; + static final String KEY_CODEC = "codec"; static final String KEY_CONNECT_TIMEOUT = "connectTimeout"; static final String KEY_SOCKET_TIMEOUT = "socketTimeout"; + static final String DEFAULT_CODEC = "default"; static final String DEFAULT_PORT = "9200"; static final String DEFAULT_USERNAME = "elastic"; static final int DEFAULT_NUMBER_OF_SHARDS = 1; @@ -62,6 +64,7 @@ final int numberOfShards; final int numberOfReplicas; final int maxResultWindow; + final String codec; final int connectTimeout; final int socketTimeout; final String prefix; @@ -82,6 +85,7 @@ cfg.getInt(SECTION_ELASTICSEARCH, null, KEY_NUMBER_OF_REPLICAS, DEFAULT_NUMBER_OF_REPLICAS); this.maxResultWindow = cfg.getInt(SECTION_ELASTICSEARCH, null, KEY_MAX_RESULT_WINDOW, DEFAULT_MAX_RESULT_WINDOW); + this.codec = firstNonNull(cfg.getString(SECTION_ELASTICSEARCH, null, KEY_CODEC), DEFAULT_CODEC); this.connectTimeout = (int) cfg.getTimeUnit(
diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticSetting.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticSetting.java index 7ec0566..0059574 100644 --- a/src/main/java/com/google/gerrit/elasticsearch/ElasticSetting.java +++ b/src/main/java/com/google/gerrit/elasticsearch/ElasticSetting.java
@@ -15,6 +15,7 @@ package com.google.gerrit.elasticsearch; import com.google.common.collect.ImmutableMap; +import com.google.gson.annotations.SerializedName; import java.util.Map; class ElasticSetting { @@ -36,6 +37,7 @@ properties.numberOfShards = config.getNumberOfShards(); properties.numberOfReplicas = config.numberOfReplicas; properties.maxResultWindow = config.maxResultWindow; + properties.codec = config.codec; return properties; } @@ -73,6 +75,9 @@ } static class SettingProperties { + @SerializedName("index.codec") + String codec; + Map<String, FieldProperties> analysis; Integer numberOfShards; Integer numberOfReplicas;
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md index ad5d5d0..927d229 100644 --- a/src/main/resources/Documentation/config.md +++ b/src/main/resources/Documentation/config.md
@@ -92,6 +92,13 @@ Not set by default. +### elasticsearch.codec + +Sets the codec to be used for the index data. For further information about supported codecs, please refer to the static index setting +[index.codec](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-codec). + +Defaults to `default`. + [Back to @PLUGIN@ documentation index][index] [index]: index.html