From aa69744f67547484e3b80d122a6c83baa7ce4d80 Mon Sep 17 00:00:00 2001 From: Court Ewing Date: Fri, 4 Nov 2016 20:01:38 -0400 Subject: [PATCH 1/8] Allow patch level mismatch between Kibana and Elasticsearch (#8976) Kibana should be able to run against Elasticsearch nodes that are at the same minor version regardless of whether they are at the same patch version. In the event that their patch versions differ, we render a warning. --- README.md | 2 +- .../lib/__tests__/is_es_compatible_with_kibana.js | 8 ++++---- .../elasticsearch/lib/check_es_version.js | 13 ++++++------- .../lib/is_es_compatible_with_kibana.js | 5 ----- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 03bf3e789de6a0..6e6ad0f3a34e1d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ _Note: The version numbers below are only examples, meant to illustrate the rela | ES patch number is newer. | 5.1.__2__ | 5.1.__5__ | ⚠️ Logged warning | | ES minor number is newer. | 5.__1__.2 | 5.__5__.0 | ⚠️ Logged warning | | ES major number is newer. | __5__.1.2 | __6__.0.0 | 🚫 Fatal error | -| ES patch number is older. | 5.1.__2__ | 5.1.__0__ | 🚫 Fatal error | +| ES patch number is older. | 5.1.__2__ | 5.1.__0__ | ⚠️ Logged warning | | ES minor number is older. | 5.__1__.2 | 5.__0__.0 | 🚫 Fatal error | | ES major number is older. | __5__.1.2 | __4__.0.0 | 🚫 Fatal error | diff --git a/src/core_plugins/elasticsearch/lib/__tests__/is_es_compatible_with_kibana.js b/src/core_plugins/elasticsearch/lib/__tests__/is_es_compatible_with_kibana.js index 6445f3245168bc..d8b76e14d7d45d 100644 --- a/src/core_plugins/elasticsearch/lib/__tests__/is_es_compatible_with_kibana.js +++ b/src/core_plugins/elasticsearch/lib/__tests__/is_es_compatible_with_kibana.js @@ -17,10 +17,6 @@ describe('plugins/elasticsearch', () => { it('when majors are equal, but ES minor is less than Kibana minor', () => { expect(isEsCompatibleWithKibana('1.0.0', '1.1.0')).to.be(false); }); - - it('when majors and minors are equal, but ES patch is less than Kibana patch', () => { - expect(isEsCompatibleWithKibana('1.1.0', '1.1.1')).to.be(false); - }); }); describe('returns true', () => { @@ -35,6 +31,10 @@ describe('plugins/elasticsearch', () => { it('when majors and minors are equal, and ES patch is greater than Kibana patch', () => { expect(isEsCompatibleWithKibana('1.1.1', '1.1.0')).to.be(true); }); + + it('when majors and minors are equal, but ES patch is less than Kibana patch', () => { + expect(isEsCompatibleWithKibana('1.1.0', '1.1.1')).to.be(true); + }); }); }); }); diff --git a/src/core_plugins/elasticsearch/lib/check_es_version.js b/src/core_plugins/elasticsearch/lib/check_es_version.js index 463f512666ef12..2a6dba1ea957d2 100644 --- a/src/core_plugins/elasticsearch/lib/check_es_version.js +++ b/src/core_plugins/elasticsearch/lib/check_es_version.js @@ -5,7 +5,6 @@ import _ from 'lodash'; import esBool from './es_bool'; -import semver from 'semver'; import isEsCompatibleWithKibana from './is_es_compatible_with_kibana'; /** @@ -37,9 +36,9 @@ module.exports = function checkEsVersion(server, kibanaVersion) { return incompatibleNodes.push(esNode); } - // It's acceptable if ES is ahead of Kibana, but we want to prompt users to upgrade Kibana - // to match it. - if (semver.gt(esNode.version, kibanaVersion)) { + // It's acceptable if ES and Kibana versions are not the same so long as + // they are not incompatible, but we should warn about it + if (esNode.version !== kibanaVersion) { warningNodes.push(esNode); } }); @@ -65,9 +64,9 @@ module.exports = function checkEsVersion(server, kibanaVersion) { lastWarnedNodesForServer.set(server, warningNodeNames); server.log(['warning'], { tmpl: ( - `You're running Kibana ${kibanaVersion} with some newer versions of ` + - 'Elasticsearch. Update Kibana to the latest version to prevent compatibility issues: ' + - warningNodeNames + `You're running Kibana ${kibanaVersion} with some different versions of ` + + 'Elasticsearch. Update Kibana or Elasticsearch to the same ' + + `version to prevent compatibility issues: ${warningNodeNames}` ), kibanaVersion, nodes: simplifiedNodes, diff --git a/src/core_plugins/elasticsearch/lib/is_es_compatible_with_kibana.js b/src/core_plugins/elasticsearch/lib/is_es_compatible_with_kibana.js index 21bec63869e5a5..954e25033ee002 100644 --- a/src/core_plugins/elasticsearch/lib/is_es_compatible_with_kibana.js +++ b/src/core_plugins/elasticsearch/lib/is_es_compatible_with_kibana.js @@ -29,10 +29,5 @@ export default function isEsCompatibleWithKibana(esVersion, kibanaVersion) { return false; } - // Reject older patch versions of ES. - if (esVersionNumbers.patch < kibanaVersionNumbers.patch) { - return false; - } - return true; } From 3f2aa6f20c5c5160e01551143e9634ebc298652b Mon Sep 17 00:00:00 2001 From: Joe Gallo Date: Mon, 7 Nov 2016 11:45:09 -0500 Subject: [PATCH 2/8] Typo fixes in various descriptions. (#8943) Affects table_vis, metric_vis, timelion, and settings. --- src/core_plugins/metric_vis/public/metric_vis.js | 2 +- src/core_plugins/table_vis/public/table_vis.js | 2 +- src/core_plugins/timelion/public/vis/index.js | 2 +- src/ui/settings/defaults.js | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core_plugins/metric_vis/public/metric_vis.js b/src/core_plugins/metric_vis/public/metric_vis.js index f73b9ffe5a7a9c..6a192f74dc01d4 100644 --- a/src/core_plugins/metric_vis/public/metric_vis.js +++ b/src/core_plugins/metric_vis/public/metric_vis.js @@ -21,7 +21,7 @@ function MetricVisProvider(Private) { name: 'metric', title: 'Metric', description: 'One big number for all of your one big number needs. Perfect for showing ' + - 'a count of hits, or the exact average a numeric field.', + 'a count of hits, or the exact average of a numeric field.', icon: 'fa-calculator', template: metricVisTemplate, params: { diff --git a/src/core_plugins/table_vis/public/table_vis.js b/src/core_plugins/table_vis/public/table_vis.js index 85ede8dbd9bb59..af004bcc633a40 100644 --- a/src/core_plugins/table_vis/public/table_vis.js +++ b/src/core_plugins/table_vis/public/table_vis.js @@ -32,7 +32,7 @@ function TableVisTypeProvider(Private) { title: 'Data table', icon: 'fa-table', description: 'The data table provides a detailed breakdown, in tabular format, of the results of a composed ' + - 'aggregation. Tip, a data table is available from many other charts by clicking grey bar at the bottom of the chart.', + 'aggregation. Tip, a data table is available from many other charts by clicking the grey bar at the bottom of the chart.', template: tableVisTemplate, params: { defaults: { diff --git a/src/core_plugins/timelion/public/vis/index.js b/src/core_plugins/timelion/public/vis/index.js index afcad2bd2a3c1f..d12475656fef0c 100644 --- a/src/core_plugins/timelion/public/vis/index.js +++ b/src/core_plugins/timelion/public/vis/index.js @@ -19,7 +19,7 @@ define(function (require) { title: 'Timeseries', icon: 'fa-clock-o', description: 'Create timeseries charts using the timelion expression language. ' + - 'Perfect for computing and combining timeseries set with functions suchs as derivatives and moving averages', + 'Perfect for computing and combining timeseries sets with functions such as derivatives and moving averages', template: require('plugins/timelion/vis/timelion_vis.html'), params: { editor: require('plugins/timelion/vis/timelion_vis_params.html') diff --git a/src/ui/settings/defaults.js b/src/ui/settings/defaults.js index 0ff0c27d2989c1..1a6845989281ae 100644 --- a/src/ui/settings/defaults.js +++ b/src/ui/settings/defaults.js @@ -73,7 +73,7 @@ export default function defaultSettingsProvider() { 'doc_table:highlight': { value: true, description: 'Highlight results in Discover and Saved Searches Dashboard.' + - 'Highlighing makes request slow when working on big documents.', + 'Highlighting makes requests slow when working on big documents.', }, 'courier:maxSegmentCount': { value: 30, @@ -94,11 +94,11 @@ export default function defaultSettingsProvider() { }, 'histogram:barTarget': { value: 50, - description: 'Attempt to generate around this many bar when using "auto" interval in date histograms', + description: 'Attempt to generate around this many bars when using "auto" interval in date histograms', }, 'histogram:maxBars': { value: 100, - description: 'Never show more than this many bar in date histograms, scale values if needed', + description: 'Never show more than this many bars in date histograms, scale values if needed', }, 'visualization:tileMap:maxPrecision': { value: 7, From f35f6947cbdd0bf3f97e7ee1dbcfec08ee648ed8 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Mon, 7 Nov 2016 09:43:24 -0800 Subject: [PATCH 3/8] Use lowercase first letters for map coordinate variable names. (#8972) --- src/ui/public/vislib/visualizations/_map.js | 26 ++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/ui/public/vislib/visualizations/_map.js b/src/ui/public/vislib/visualizations/_map.js index 68997d0d015b70..a015ff90b4704b 100644 --- a/src/ui/public/vislib/visualizations/_map.js +++ b/src/ui/public/vislib/visualizations/_map.js @@ -253,21 +253,21 @@ export default function MapFactory(Private, tilemap, $sanitize) { const southEast = bounds.getSouthEast(); const northWest = bounds.getNorthWest(); - let SouthEastLng = southEast.lng; - if (SouthEastLng > 180) { - SouthEastLng -= 360; + let southEastLng = southEast.lng; + if (southEastLng > 180) { + southEastLng -= 360; } - let NorthWestLng = northWest.lng; - if (NorthWestLng < -180) { - NorthWestLng += 360; + let northWestLng = northWest.lng; + if (northWestLng < -180) { + northWestLng += 360; } - const SouthEastLat = southEast.lat; - const NorthWestLat = northWest.lat; + const southEastLat = southEast.lat; + const northWestLat = northWest.lat; //Bounds cannot be created unless they form a box with larger than 0 dimensions //Invalid areas are rejected by ES. - if (SouthEastLat === NorthWestLat || SouthEastLng === NorthWestLng) { + if (southEastLat === northWestLat || southEastLng === northWestLng) { return; } @@ -276,12 +276,12 @@ export default function MapFactory(Private, tilemap, $sanitize) { chart: self._chartData, bounds: { bottom_right: { - lat: SouthEastLat, - lon: SouthEastLng + lat: southEastLat, + lon: southEastLng }, top_left: { - lat: NorthWestLat, - lon: NorthWestLng + lat: northWestLat, + lon: northWestLng } } }); From 8bcbad3b88d8bd9fd2f00c239ec1e0ec19b6d77a Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Mon, 7 Nov 2016 10:46:42 -0800 Subject: [PATCH 4/8] Remove unused es_bool file. (#8977) --- .../elasticsearch/lib/check_es_version.js | 1 - src/core_plugins/elasticsearch/lib/es_bool.js | 17 -------------- src/ui/public/utils/es_bool.js | 22 ------------------- 3 files changed, 40 deletions(-) delete mode 100644 src/core_plugins/elasticsearch/lib/es_bool.js delete mode 100644 src/ui/public/utils/es_bool.js diff --git a/src/core_plugins/elasticsearch/lib/check_es_version.js b/src/core_plugins/elasticsearch/lib/check_es_version.js index 2a6dba1ea957d2..b9eddd0e0f2494 100644 --- a/src/core_plugins/elasticsearch/lib/check_es_version.js +++ b/src/core_plugins/elasticsearch/lib/check_es_version.js @@ -4,7 +4,6 @@ */ import _ from 'lodash'; -import esBool from './es_bool'; import isEsCompatibleWithKibana from './is_es_compatible_with_kibana'; /** diff --git a/src/core_plugins/elasticsearch/lib/es_bool.js b/src/core_plugins/elasticsearch/lib/es_bool.js deleted file mode 100644 index 353520f3fea327..00000000000000 --- a/src/core_plugins/elasticsearch/lib/es_bool.js +++ /dev/null @@ -1,17 +0,0 @@ -const map = { - 'false': false, - 'off': false, - 'no': false, - '0': false, - 'true': true, - 'on': true, - 'yes': true, - '1': true -}; -module.exports = function (str) { - const bool = map[String(str)]; - if (typeof bool !== 'boolean') { - throw new TypeError('"' + str + '" does not map to an esBool'); - } - return bool; -}; diff --git a/src/ui/public/utils/es_bool.js b/src/ui/public/utils/es_bool.js deleted file mode 100644 index a580ffac721884..00000000000000 --- a/src/ui/public/utils/es_bool.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function () { - let map = { - 'false': false, - 'off': false, - 'no': false, - '0': false, - 'true': true, - 'on': true, - 'yes': true, - '1': true - }; - - return function (str) { - let bool = map[String(str)]; - - if (typeof bool !== 'boolean') { - throw new TypeError('"' + str + '" does not map to an esBool'); - } - - return bool; - }; -}); From d99976995d4b379e475c291ad40626efcf31444c Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Mon, 7 Nov 2016 11:26:30 -0800 Subject: [PATCH 5/8] Add details on how we use Git and GitHub to CONTRIBUTING.md. (#8978) --- CONTRIBUTING.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20030f9edea746..d0b1c8ce13fea4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,6 +12,10 @@ A high level overview of our contributing guidelines. - [Voicing the importance of an issue](#voicing-the-importance-of-an-issue) - ["My issue isn't getting enough attention"](#my-issue-isnt-getting-enough-attention) - ["I want to help!"](#i-want-to-help) +- [How We Use Git and GitHub](#how-we-use-git-and-github) + - [Branching](#branching) + - [Commits and Merging](#commits-and-merging) + - [What Goes Into a Pull Request](#what-goes-into-a-pull-request) - [Contributing Code](#contributing-code) - [Setting Up Your Development Environment](#setting-up-your-development-environment) - [Customizing `config/kibana.dev.yml`](#customizing-configkibanadevyml) @@ -65,6 +69,31 @@ Feel free to bump your issues if you think they've been neglected for a prolonge We enjoy working with contributors to get their code accepted. There are many approaches to fixing a problem and it is important to find the best approach before writing too much code. +## How We Use Git and GitHub + +### Branching + +* All work on the next major release goes into master. +* Past major release branches are named `{majorVersion}.x`. They contain work that will go into the next minor release. For example, if the next minor release is `5.2.0`, work for it should go into the `5.x` branch. +* Past minor release branches are named `{majorVersion}.{minorVersion}`. They contain work that will go into the next patch release. For example, if the next patch release is `5.3.1`, work for it should go into the `5.3` branch. +* All work is done on feature branches and merged into one of these branches. +* Where appropriate, we'll backport changes into older release branches. + +### Commits and Merging + +* Feel free to make as many commits as you want, while working on a branch. +* When submitting a PR for review, please perform an interactive rebase to present a logical history that's easy for the reviewers to follow. +* Please use your commit messages to include helpful information on your changes, e.g. changes to APIs, UX changes, bugs fixed, and an explanation of *why* you made the changes that you did. +* Resolve merge conflicts by rebasing the target branch over your feature branch, and force-pushing. +* When merging, we'll squash your commits into a single commit. + +### What Goes Into a Pull Request + +* Please include an explanation of your changes in your PR description. +* Links to relevant issues, external resources, or related PRs are very important and useful. +* Please update any tests that pertain to your code, and add new tests where appropriate. +* See [Submitting a Pull Request](#submitting-a-pull-request) for more info. + ## Contributing Code These guidelines will help you get your Pull Request into shape so that a code review can start as soon as possible. From 438038bd58c39ef10dd9ca5903e2d27dd7597b06 Mon Sep 17 00:00:00 2001 From: Spencer Date: Mon, 7 Nov 2016 16:06:36 -0700 Subject: [PATCH 6/8] [kbnUrl] reload the route when going from "" to "/" (#8815) * [kbnUrl] reload the route when going from "" to "/" In timelion the initial route is set to '' which might not be perfectly correct, but works fine. When clicking the "new" button for the first time this causes the route to update from '' to '/', which the kbnUrl service assumes will cause a route change and does not try to force the route to reload. Instead, the router sees this as a noop and the change to the route has no effect unless you click the "new" button a second time. * [kbnUrl] clarify the purpose _shouldAutoReload * [kbnUrl] fix the tests --- src/ui/public/url/__tests__/url.js | 24 ++++++++++++------------ src/ui/public/url/url.js | 12 ++++++++---- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/ui/public/url/__tests__/url.js b/src/ui/public/url/__tests__/url.js index d7385c748596ae..f72469b6297b9b 100644 --- a/src/ui/public/url/__tests__/url.js +++ b/src/ui/public/url/__tests__/url.js @@ -369,7 +369,7 @@ describe('kbnUrl', function () { }); it('should call replace on $location', function () { - sinon.stub(kbnUrl, '_shouldAutoReload').returns(false); + sinon.stub(kbnUrl, '_shouldForceReload').returns(false); sinon.stub($location, 'replace'); expect($location.replace.callCount).to.be(0); @@ -404,7 +404,7 @@ describe('kbnUrl', function () { }); it('should call replace on $location', function () { - sinon.stub(kbnUrl, '_shouldAutoReload').returns(false); + sinon.stub(kbnUrl, '_shouldForceReload').returns(false); sinon.stub($location, 'replace'); expect($location.replace.callCount).to.be(0); @@ -413,7 +413,7 @@ describe('kbnUrl', function () { }); }); - describe('_shouldAutoReload', function () { + describe('_shouldForceReload', function () { let next; let prev; @@ -431,7 +431,7 @@ describe('kbnUrl', function () { it('returns false if the passed url doesn\'t match the current route', function () { next.path = '/not current'; - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(false); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(false); }); describe('if the passed url does match the route', function () { @@ -439,14 +439,14 @@ describe('kbnUrl', function () { describe('and the path is the same', function () { describe('and the search params are the same', function () { it('returns true', function () { - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(true); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(true); }); }); describe('but the search params are different', function () { it('returns false', function () { next.search = {}; prev.search = { q: 'search term' }; - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(false); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(false); }); }); }); @@ -458,14 +458,14 @@ describe('kbnUrl', function () { describe('and the search params are the same', function () { it('returns false', function () { - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(false); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(false); }); }); describe('but the search params are different', function () { it('returns false', function () { next.search = {}; prev.search = { q: 'search term' }; - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(false); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(false); }); }); }); @@ -479,14 +479,14 @@ describe('kbnUrl', function () { describe('and the path is the same', function () { describe('and the search params are the same', function () { it('returns true', function () { - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(true); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(true); }); }); describe('but the search params are different', function () { it('returns true', function () { next.search = {}; prev.search = { q: 'search term' }; - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(true); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(true); }); }); }); @@ -498,14 +498,14 @@ describe('kbnUrl', function () { describe('and the search params are the same', function () { it('returns false', function () { - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(false); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(false); }); }); describe('but the search params are different', function () { it('returns false', function () { next.search = {}; prev.search = { q: 'search term' }; - expect(kbnUrl._shouldAutoReload(next, prev, $route)).to.be(false); + expect(kbnUrl._shouldForceReload(next, prev, $route)).to.be(false); }); }); }); diff --git a/src/ui/public/url/url.js b/src/ui/public/url/url.js index d26a8e8976e638..951a486ecbc8c7 100644 --- a/src/ui/public/url/url.js +++ b/src/ui/public/url/url.js @@ -165,7 +165,7 @@ function KbnUrlProvider($injector, $location, $rootScope, $parse, Private) { if ($injector.has('$route')) { const $route = $injector.get('$route'); - if (self._shouldAutoReload(next, prev, $route)) { + if (self._shouldForceReload(next, prev, $route)) { const appState = Private(AppStateProvider).getAppState(); if (appState) appState.destroy(); @@ -180,17 +180,21 @@ function KbnUrlProvider($injector, $location, $rootScope, $parse, Private) { } }; - self._shouldAutoReload = function (next, prev, $route) { + // determine if the router will automatically reload the route + self._shouldForceReload = function (next, prev, $route) { if (reloading) return false; let route = $route.current && $route.current.$$route; if (!route) return false; - if (next.path !== prev.path) return false; + // for the purposes of determining whether the router will + // automatically be reloading, '' and '/' are equal + const nextPath = next.path || '/'; + const prevPath = prev.path || '/'; + if (nextPath !== prevPath) return false; let reloadOnSearch = route.reloadOnSearch; let searchSame = _.isEqual(next.search, prev.search); - return (reloadOnSearch && searchSame) || !reloadOnSearch; }; } From a9769e1f49a7e8f3a66b64e691ee4cdb8eec736c Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Tue, 8 Nov 2016 10:53:30 +0100 Subject: [PATCH 7/8] pie chart doesnt render small slices correctly (#8986) * pie chart doesnt render small slices correctly --- src/ui/public/vislib/visualizations/pie_chart.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/public/vislib/visualizations/pie_chart.js b/src/ui/public/vislib/visualizations/pie_chart.js index ac467990b26614..fd2ccb8a9c841f 100644 --- a/src/ui/public/vislib/visualizations/pie_chart.js +++ b/src/ui/public/vislib/visualizations/pie_chart.js @@ -119,6 +119,7 @@ export default function PieChartFactory(Private) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); }) .endAngle(function (d) { + if (d.dx < 1e-8) return x(d.x); return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); }) .innerRadius(function (d) { From b38a106d398978f955cd169a43039103a22ec34f Mon Sep 17 00:00:00 2001 From: debadair Date: Tue, 8 Nov 2016 08:31:37 -0800 Subject: [PATCH 8/8] Docs: Updated Loading Sample Data to download all datasets from S3. Closes #8997 (#8999) --- docs/getting-started/tutorial-load-dataset.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/tutorial-load-dataset.asciidoc b/docs/getting-started/tutorial-load-dataset.asciidoc index 395bd2ed63915e..44a42bc853445e 100644 --- a/docs/getting-started/tutorial-load-dataset.asciidoc +++ b/docs/getting-started/tutorial-load-dataset.asciidoc @@ -4,9 +4,9 @@ The tutorials in this section rely on the following data sets: * The complete works of William Shakespeare, suitably parsed into fields. Download this data set by clicking here: - https://www.elastic.co/guide/en/kibana/3.0/snippets/shakespeare.json[shakespeare.json]. + https://download.elastic.co/demos/kibana/gettingstarted/shakespeare.json[shakespeare.json]. * A set of fictitious accounts with randomly generated data. Download this data set by clicking here: - https://github.com/bly2k/files/blob/master/accounts.zip?raw=true[accounts.zip] + https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip[accounts.zip] * A set of randomly generated log files. Download this data set by clicking here: https://download.elastic.co/demos/kibana/gettingstarted/logs.jsonl.gz[logs.jsonl.gz]