diff --git a/public/app/plugins/datasource/elasticsearch/config_ctrl.ts b/public/app/plugins/datasource/elasticsearch/config_ctrl.ts index 2a3803db998..67a82c681d4 100644 --- a/public/app/plugins/datasource/elasticsearch/config_ctrl.ts +++ b/public/app/plugins/datasource/elasticsearch/config_ctrl.ts @@ -8,6 +8,7 @@ export class ElasticConfigCtrl { constructor($scope) { this.current.jsonData.timeField = this.current.jsonData.timeField || '@timestamp'; this.current.jsonData.esVersion = this.current.jsonData.esVersion || 5; + this.current.jsonData.maxConcurrentShardRequests = this.current.jsonData.maxConcurrentShardRequests || 256; } indexPatternTypes = [ @@ -22,6 +23,7 @@ export class ElasticConfigCtrl { esVersions = [ {name: '2.x', value: 2}, {name: '5.x', value: 5}, + {name: '5.6+', value: 56}, ]; indexPatternTypeChanged() { diff --git a/public/app/plugins/datasource/elasticsearch/datasource.ts b/public/app/plugins/datasource/elasticsearch/datasource.ts index 814b6c72da6..9b9de22eb5e 100644 --- a/public/app/plugins/datasource/elasticsearch/datasource.ts +++ b/public/app/plugins/datasource/elasticsearch/datasource.ts @@ -16,6 +16,7 @@ export class ElasticDatasource { timeField: string; esVersion: number; interval: string; + maxConcurrentShardRequests: number; queryBuilder: ElasticQueryBuilder; indexPattern: IndexPattern; @@ -30,6 +31,7 @@ export class ElasticDatasource { this.esVersion = instanceSettings.jsonData.esVersion; this.indexPattern = new IndexPattern(instanceSettings.index, instanceSettings.jsonData.interval); this.interval = instanceSettings.jsonData.timeInterval; + this.maxConcurrentShardRequests = instanceSettings.jsonData.maxConcurrentShardRequests; this.queryBuilder = new ElasticQueryBuilder({ timeField: this.timeField, esVersion: this.esVersion, @@ -213,11 +215,15 @@ export class ElasticDatasource { } getQueryHeader(searchType, timeFrom, timeTo) { - return angular.toJson({ - search_type: searchType, - "ignore_unavailable": true, - index: this.indexPattern.getIndexList(timeFrom, timeTo), - }); + var query_header: any = { + search_type: searchType, + "ignore_unavailable": true, + index: this.indexPattern.getIndexList(timeFrom, timeTo), + }; + if (this.esVersion >= 56) { + query_header["max_concurrent_shard_requests"] = this.maxConcurrentShardRequests; + } + return angular.toJson(query_header); } query(options) { diff --git a/public/app/plugins/datasource/elasticsearch/partials/config.html b/public/app/plugins/datasource/elasticsearch/partials/config.html index 8b5f3ba8a8a..42ae4265371 100644 --- a/public/app/plugins/datasource/elasticsearch/partials/config.html +++ b/public/app/plugins/datasource/elasticsearch/partials/config.html @@ -25,6 +25,10 @@ Version +