summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2020-03-18 08:57:18 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-03-18 08:57:18 +0000
commit5f73fd6555f59c1ae046ca3195c63e0a73521261 (patch)
treefd8ee6dd78d2a8cc7b0fe23358b77a2e7d3d43c3
parentae8babd7f5fbf54c82fb79289df0166d1ec3a7f3 (diff)
parent76fed530a0fdc114ecfde3fec003d360e7ace671 (diff)
Merge "Support 'max_result_window' config for Elasticsearch indexes" into stable-2.16
-rw-r--r--Documentation/config-gerrit.txt8
-rw-r--r--java/com/google/gerrit/elasticsearch/ElasticConfiguration.java6
-rw-r--r--java/com/google/gerrit/elasticsearch/ElasticSetting.java2
3 files changed, 16 insertions, 0 deletions
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 250ffdd8fb..86375670e6 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -3188,6 +3188,14 @@ Elasticsearch documentation] for details.
+
Defaults to 1.
+[[elasticsearch.maxResultWindow]]elasticsearch.maxResultWindow::
++
+Sets the maximum value of `from + size` for searches to use per index. Refer to the
+link:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#dynamic-index-settings[
+Elasticsearch documentation] for details.
++
+Defaults to 10000.
+
==== Elasticsearch Security
When security is enabled in Elasticsearch, the username and password must be provided.
diff --git a/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java b/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java
index cbe9bc73d0..35c33cb9b4 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticConfiguration.java
@@ -40,10 +40,13 @@ class ElasticConfiguration {
static final String KEY_SERVER = "server";
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 DEFAULT_PORT = "9200";
static final String DEFAULT_USERNAME = "elastic";
static final int DEFAULT_NUMBER_OF_SHARDS = 0;
static final int DEFAULT_NUMBER_OF_REPLICAS = 1;
+ static final int DEFAULT_MAX_RESULT_WINDOW = 10000;
private final Config cfg;
private final List<HttpHost> hosts;
@@ -52,6 +55,7 @@ class ElasticConfiguration {
final String password;
final int numberOfShards;
final int numberOfReplicas;
+ final int maxResultWindow;
final String prefix;
@Inject
@@ -68,6 +72,8 @@ class ElasticConfiguration {
cfg.getInt(SECTION_ELASTICSEARCH, null, KEY_NUMBER_OF_SHARDS, DEFAULT_NUMBER_OF_SHARDS);
this.numberOfReplicas =
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.hosts = new ArrayList<>();
for (String server : cfg.getStringList(SECTION_ELASTICSEARCH, null, KEY_SERVER)) {
try {
diff --git a/java/com/google/gerrit/elasticsearch/ElasticSetting.java b/java/com/google/gerrit/elasticsearch/ElasticSetting.java
index 14e462342d..e016efb94e 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticSetting.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticSetting.java
@@ -35,6 +35,7 @@ class ElasticSetting {
properties.analysis = fields.build();
properties.numberOfShards = config.getNumberOfShards(adapter);
properties.numberOfReplicas = config.numberOfReplicas;
+ properties.maxResultWindow = config.maxResultWindow;
return properties;
}
@@ -75,6 +76,7 @@ class ElasticSetting {
Map<String, FieldProperties> analysis;
Integer numberOfShards;
Integer numberOfReplicas;
+ Integer maxResultWindow;
}
static class FieldProperties {