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