diff --git a/docs/kibana-yml.asciidoc b/docs/kibana-yml.asciidoc
index 2a5e7fc86dde2..ecc459b501475 100644
--- a/docs/kibana-yml.asciidoc
+++ b/docs/kibana-yml.asciidoc
@@ -14,6 +14,7 @@ to this Kibana instance.
`kibana.index:`:: *Default: ".kibana"* Kibana uses an index in Elasticsearch to store saved searches, visualizations and
dashboards. Kibana creates a new index if the index doesn’t already exist.
`kibana.defaultAppId:`:: *Default: "discover"* The default application to load.
+`kibana.addDataMaxBytes:`:: *Default: 1073741824* The maximum upload size in bytes for the CSV Upload wizard
[[tilemap-settings]]`tilemap.url:`:: *Default: `"https://tiles.elastic.co/v1/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"`* The URL to the tile
service that Kibana uses to display map tiles in tilemap visualizations.
`tilemap.options.minZoom:`:: *Default: 1* The minimum zoom level.
diff --git a/src/core_plugins/kibana/index.js b/src/core_plugins/kibana/index.js
index 516e8ce5e3d70..2187a9ff64216 100644
--- a/src/core_plugins/kibana/index.js
+++ b/src/core_plugins/kibana/index.js
@@ -14,10 +14,13 @@ module.exports = function (kibana) {
return new kibana.Plugin({
id: 'kibana',
config: function (Joi) {
+ const ONE_GIGABYTE = 1024 * 1024 * 1024;
+
return Joi.object({
enabled: Joi.boolean().default(true),
defaultAppId: Joi.string().default('discover'),
- index: Joi.string().default('.kibana')
+ index: Joi.string().default('.kibana'),
+ addDataMaxBytes: Joi.number().default(ONE_GIGABYTE)
}).default();
},
@@ -41,7 +44,8 @@ module.exports = function (kibana) {
let config = server.config();
return {
kbnDefaultAppId: config.get('kibana.defaultAppId'),
- tilemap: config.get('tilemap')
+ tilemap: config.get('tilemap'),
+ addDataMaxBytes: config.get('kibana.addDataMaxBytes')
};
},
},
diff --git a/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.html b/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.html
index 8c0a0d7812b4c..8532912bd3fd6 100644
--- a/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.html
+++ b/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.html
@@ -9,7 +9,7 @@
Pick a CSV file to get started.
-
Maximum upload file size: 1 GB
+ Maximum upload file size: {{ wizard.maxBytesFormatted }}
diff --git a/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.js b/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.js
index 32cd5a7234a4b..a0922797d5371 100644
--- a/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.js
+++ b/src/core_plugins/kibana/public/management/sections/indices/add_data_steps/parse_csv_step/parse_csv_step.js
@@ -4,9 +4,10 @@ import modules from 'ui/modules';
import validateHeaders from './lib/validate_headers';
import template from './parse_csv_step.html';
import './styles/_add_data_parse_csv_step.less';
+import numeral from '@spalger/numeral';
modules.get('apps/management')
- .directive('parseCsvStep', function () {
+ .directive('parseCsvStep', function (addDataMaxBytes) {
return {
restrict: 'E',
template: template,
@@ -21,6 +22,8 @@ modules.get('apps/management')
const maxSampleRows = 10;
const maxSampleColumns = 20;
+ this.maxBytesFormatted = numeral(addDataMaxBytes).format('0 b');
+
this.delimiterOptions = [
{
label: 'comma',
@@ -55,6 +58,13 @@ modules.get('apps/management')
this.formattedErrors = [];
this.formattedWarnings = [];
+ if (this.file.size > addDataMaxBytes) {
+ this.formattedErrors.push(
+ `File size (${this.file.size} bytes) is greater than the configured limit of ${addDataMaxBytes} bytes`
+ );
+ return;
+ }
+
const config = _.assign(
{
header: true,
diff --git a/src/core_plugins/kibana/server/routes/api/ingest/register_data.js b/src/core_plugins/kibana/server/routes/api/ingest/register_data.js
index 9172e5ba88d6a..979bace5c8260 100644
--- a/src/core_plugins/kibana/server/routes/api/ingest/register_data.js
+++ b/src/core_plugins/kibana/server/routes/api/ingest/register_data.js
@@ -6,16 +6,16 @@ import { patternToIngest } from '../../../../common/lib/convert_pattern_and_inge
import { PassThrough } from 'stream';
import JSONStream from 'JSONStream';
-const ONE_GIGABYTE = 1024 * 1024 * 1024;
-
export function registerData(server) {
+ const maxBytes = server.config().get('kibana.addDataMaxBytes');
+
server.route({
path: '/api/kibana/{id}/_data',
method: 'POST',
config: {
payload: {
output: 'stream',
- maxBytes: ONE_GIGABYTE
+ maxBytes
}
},
handler: function (req, reply) {