mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
Merge branch 'master' into issues/1726
This commit is contained in:
commit
b1d40dcced
59 changed files with 558 additions and 5839 deletions
|
@ -1 +1 @@
|
|||
iojs-v2.5
|
||||
0.12.7
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
language: node_js
|
||||
node_js: 'iojs-v2.5'
|
||||
node_js: '0.12.7'
|
||||
install:
|
||||
- npm install -g npm@3.2
|
||||
- npm install
|
||||
|
|
|
@ -35,10 +35,10 @@ Please make sure you have signed the [Contributor License Agreement](http://www.
|
|||
npm install
|
||||
```
|
||||
|
||||
- Start elasticsearch, you can use [esvm](https://github.com/simianhacker/esvm) to make that easier.
|
||||
- Start elasticsearch
|
||||
|
||||
```sh
|
||||
grunt esvm:dev:keepalive
|
||||
npm run elasticsearch
|
||||
```
|
||||
|
||||
- Start the development server.
|
||||
|
@ -47,6 +47,19 @@ Please make sure you have signed the [Contributor License Agreement](http://www.
|
|||
./bin/kibana --dev
|
||||
```
|
||||
|
||||
#### `config/kibana.dev.yml`
|
||||
|
||||
The `config/kibana.yml` file stores user configuration directives. Since this file is checked into source control, however, developer preferences can't be saved without the risk of accidentally committing the modified version. To make customizing configuration easier during development, the Kibana CLI will look for a `config/kibana.dev.yml` file if run with the `--dev` flag. This file behaves just like the non-dev version and accepts any of the [standard settings](https://www.elastic.co/guide/en/kibana/master/kibana-server-properties.html).
|
||||
|
||||
The `config/kibana.dev.yml` file is very commonly used to store some opt-in/**unsafe** optimizer tweaks which can significantly increase build performance. Below is a commonly used `config/kibana.dev.yml` file, but additional options can be found [in #4611](https://github.com/elastic/kibana/pull/4611#issue-99706918).
|
||||
|
||||
```yaml
|
||||
optimize:
|
||||
sourceMaps: '#cheap-source-map' # options -> http://webpack.github.io/docs/configuration.html#devtool
|
||||
unsafeCache: true
|
||||
lazyPrebuild: false
|
||||
```
|
||||
|
||||
#### Linting
|
||||
|
||||
A note about linting: We use [eslint](http://eslint.org) to check that the [styleguide](STYLEGUIDE.md) is being followed. It runs in a pre-commit hook and as a part of the tests, but most contributors integrate it with their code editors for real-time feedback.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
require('babel/register')(require('./src/optimize/babelOptions'));
|
||||
require('babel/register')(require('./src/optimize/babelOptions').node);
|
||||
|
||||
module.exports = function (grunt) {
|
||||
// set the config once before calling load-grunt-config
|
||||
|
@ -30,7 +30,7 @@ module.exports = function (grunt) {
|
|||
}
|
||||
}()),
|
||||
|
||||
nodeVersion: '2.5.0',
|
||||
nodeVersion: grunt.file.read('.node-version').trim(),
|
||||
|
||||
meta: {
|
||||
banner: '/*! <%= package.name %> - v<%= package.version %> - ' +
|
||||
|
|
|
@ -39,7 +39,7 @@ For the daring, snapshot builds are available. These builds are created after ea
|
|||
|
||||
| platform | | |
|
||||
| --- | --- | --- |
|
||||
| OSX | [tar](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-darwin-x64.tar.gz) | [zip](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-darwin-x64.zip) |
|
||||
| Linux x64 | [tar](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-linux-x64.tar.gz) | [zip](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-linux-x64.zip) |
|
||||
| Linux x86 | [tar](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-linux-x86.tar.gz) | [zip](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-linux-x86.zip) |
|
||||
| Windows | [tar](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-windows.tar.gz) | [zip](http://download.elastic.co/kibana/kibana/kibana-4.2.0-snapshot-windows.zip) |
|
||||
| OSX | [tar](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-darwin-x64.tar.gz) | [zip](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-darwin-x64.zip) |
|
||||
| Linux x64 | [tar](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-linux-x64.tar.gz) | [zip](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-linux-x64.zip) |
|
||||
| Linux x86 | [tar](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-linux-x86.tar.gz) | [zip](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-linux-x86.zip) |
|
||||
| Windows | [tar](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-windows.tar.gz) | [zip](http://download.elastic.co/kibana/kibana-snapshot/kibana-4.2.0-snapshot-windows.zip) |
|
||||
|
|
|
@ -2,6 +2,7 @@ This is a collection of style guides for Kibana projects. The include guides for
|
|||
|
||||
- [JavaScript](#javascript-style-guide)
|
||||
- [Kibana Project](#kibana-style-guide)
|
||||
- [Html](#html-style-guide)
|
||||
|
||||
# JavaScript Style Guide
|
||||
|
||||
|
@ -855,6 +856,24 @@ require('ui/routes')
|
|||
});
|
||||
```
|
||||
|
||||
# Html Style Guide
|
||||
|
||||
### Multiple attribute values
|
||||
|
||||
When a node has multiple attributes that would cause it to exceed the line character limit, each attribute including the first should be on its own line with a single indent. Also, when a node that is styled in this way has child nodes, there should be a blank line between the openening parent tag and the first child tag.
|
||||
|
||||
```
|
||||
<ul
|
||||
attribute1="value1"
|
||||
attribute2="value2"
|
||||
attribute3="value3">
|
||||
|
||||
<li></li>
|
||||
<li></li>
|
||||
...
|
||||
</ul>
|
||||
```
|
||||
|
||||
# Attribution
|
||||
|
||||
This JavaScript guide forked from the [node style guide](https://github.com/felixge/node-style-guide) created by [Felix Geisendörfer](http://felixge.de/) and is
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
# kibana.defaultAppId: "discover"
|
||||
|
||||
# If your Elasticsearch is protected with basic auth, this is the user credentials
|
||||
# used by the Kibana server to perform maintence on the kibana_index at statup. Your Kibana
|
||||
# used by the Kibana server to perform maintenance on the kibana_index at startup. Your Kibana
|
||||
# users will still need to authenticate with Elasticsearch (which is proxied through
|
||||
# the Kibana server)
|
||||
# elasticsearch.username: user
|
||||
|
|
|
@ -5,8 +5,16 @@ Kibana is a web application that you access through port 5601. All you need to d
|
|||
machine where Kibana is running and specify the port number. For example, `localhost:5601` or
|
||||
`http://YOURDOMAIN.com:5601`.
|
||||
|
||||
When you access Kibana, the Discover page loads by default with the default index pattern selected. The time filter is
|
||||
set to the last 15 minutes and the search query is set to match-all (\*).
|
||||
When you access Kibana, the <<discover,Discover>> page loads by default with the default index pattern selected. The
|
||||
time filter is set to the last 15 minutes and the search query is set to match-all (\*).
|
||||
|
||||
If you don't see any documents, try setting the time filter to a wider time range.
|
||||
If you still don't see any results, it's possible that you don't *have* any documents.
|
||||
|
||||
[[status]]
|
||||
=== Checking Kibana Status
|
||||
|
||||
You can reach the Kibana server's status page by navigating to `localhost:5601/status`. The status page displays
|
||||
information about the server's resource usage and lists the installed plugins.
|
||||
|
||||
image::images/kibana-status-page.png[]
|
||||
|
|
|
@ -31,7 +31,8 @@ remove a range.
|
|||
or bottom _n_ elements of a given field to display, ordered by count or a custom metric.
|
||||
*Filters*:: You can specify a set of {ref}/search-aggregations-bucket-filters-aggregation.html[_filters_] for the data.
|
||||
You can specify a filter as a query string or in JSON format, just as in the Discover search bar. Click *Add Filter* to
|
||||
add another filter.
|
||||
add another filter. Click the image:images/labelbutton.png[] *label* button to open the label field, where you can type
|
||||
in a name to display on the visualization.
|
||||
*Significant Terms*:: Displays the results of the experimental
|
||||
{ref}/search-aggregations-bucket-significantterms-aggregation.html[_significant terms_] aggregation. The value of the
|
||||
*Size* parameter defines the number of entries this aggregation returns.
|
||||
|
|
|
@ -6,7 +6,7 @@ key Kibana functionality. By the end of this tutorial, you will have:
|
|||
|
||||
* Loaded a sample data set into your Elasticsearch installation
|
||||
* Defined at least one index pattern
|
||||
* Used the <<discover, Discover>> functionality to explore your data
|
||||
* Use the <<discover, Discover>> functionality to explore your data
|
||||
* Set up some <<visualize,_visualizations_>> to graphically represent your data
|
||||
* Assembled visualizations into a <<dashboard,Dashboard>>
|
||||
|
||||
|
|
BIN
docs/images/kibana-status-page.png
Normal file
BIN
docs/images/kibana-status-page.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 105 KiB |
BIN
docs/images/labelbutton.png
Normal file
BIN
docs/images/labelbutton.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 582 B |
|
@ -42,7 +42,8 @@ remove a range.
|
|||
or bottom _n_ elements of a given field to display, ordered by count or a custom metric.
|
||||
*Filters*:: You can specify a set of {ref}/search-aggregations-bucket-filters-aggregation.html[_filters_] for the data.
|
||||
You can specify a filter as a query string or in JSON format, just as in the Discover search bar. Click *Add Filter* to
|
||||
add another filter.
|
||||
add another filter. Click the image:images/labelbutton.png[] *label* button to open the label field, where you can type
|
||||
in a name to display on the visualization.
|
||||
*Significant Terms*:: Displays the results of the experimental
|
||||
{ref}/search-aggregations-bucket-significantterms-aggregation.html[_significant terms_] aggregation. The value of the
|
||||
*Size* parameter defines the number of entries this aggregation returns.
|
||||
|
|
|
@ -1,64 +1,57 @@
|
|||
[[settings]]
|
||||
== Settings
|
||||
|
||||
To use Kibana, you have to tell it about the Elasticsearch indices that you
|
||||
want to explore by configuring one or more index patterns. You can also:
|
||||
To use Kibana, you have to tell it about the Elasticsearch indices that you want to explore by configuring one or more
|
||||
index patterns. You can also:
|
||||
|
||||
* Create scripted fields that are computed on the fly from your data. You can
|
||||
browse and visualize scripted fields, but you cannot search them.
|
||||
* Set advanced options such as the number of rows to show in a table and
|
||||
how many of the most popular fields to show. Use caution when modifying advanced options,
|
||||
as it's possible to set values that are incompatible with one another.
|
||||
* Create scripted fields that are computed on the fly from your data. You can browse and visualize scripted fields, but
|
||||
you cannot search them.
|
||||
* Set advanced options such as the number of rows to show in a table and how many of the most popular fields to show.
|
||||
Use caution when modifying advanced options, as it's possible to set values that are incompatible with one another.
|
||||
* Configure Kibana for a production environment
|
||||
|
||||
[float]
|
||||
[[settings-create-pattern]]
|
||||
=== Creating an Index Pattern to Connect to Elasticsearch
|
||||
An _index pattern_ identifies one or more Elasticsearch indices that you want to
|
||||
explore with Kibana. Kibana looks for index names that match the specified pattern.
|
||||
An asterisk (*) in the pattern matches zero or more characters. For example, the pattern
|
||||
`myindex-*` matches all indices whose names start with `myindex-`, such as `myindex-1`
|
||||
and `myindex-2`.
|
||||
An _index pattern_ identifies one or more Elasticsearch indices that you want to explore with Kibana. Kibana looks for
|
||||
index names that match the specified pattern.
|
||||
An asterisk (*) in the pattern matches zero or more characters. For example, the pattern `myindex-*` matches all
|
||||
indices whose names start with `myindex-`, such as `myindex-1` and `myindex-2`.
|
||||
|
||||
If you use event times to create index names (for example, if you're pushing data
|
||||
into Elasticsearch from Logstash), the index pattern can also contain a date format.
|
||||
In this case, the static text in the pattern must be enclosed in brackets, and you
|
||||
specify the date format using the tokens described in <<date-format-tokens>>.
|
||||
If you use event times to create index names (for example, if you're pushing data into Elasticsearch from Logstash),
|
||||
the index pattern can also contain a date format.
|
||||
In this case, the static text in the pattern must be enclosed in brackets, and you specify the date format using the
|
||||
tokens described in <<date-format-tokens>>.
|
||||
|
||||
For example, `[logstash-]YYYY.MM.DD` matches all indices whose names have a
|
||||
timestamp of the form `YYYY.MM.DD` appended to the prefix `logstash-`, such as
|
||||
`logstash-2015.01.31` and `logstash-2015-02-01`.
|
||||
For example, `[logstash-]YYYY.MM.DD` matches all indices whose names have a timestamp of the form `YYYY.MM.DD` appended
|
||||
to the prefix `logstash-`, such as `logstash-2015.01.31` and `logstash-2015-02-01`.
|
||||
|
||||
An index pattern can also simply be the name of a single index.
|
||||
|
||||
To create an index pattern to connect to Elasticsearch:
|
||||
|
||||
. Go to the *Settings > Indices* tab.
|
||||
. Specify an index pattern that matches the name of one or more of your Elasticsearch
|
||||
indices. By default, Kibana guesses that you're you're working with log data being
|
||||
fed into Elasticsearch by Logstash.
|
||||
. Specify an index pattern that matches the name of one or more of your Elasticsearch indices. By default, Kibana
|
||||
guesses that you're you're working with log data being fed into Elasticsearch by Logstash.
|
||||
+
|
||||
NOTE: When you switch between top-level tabs, Kibana remembers where you were.
|
||||
For example, if you view a particular index pattern from the Settings tab, switch
|
||||
to the Discover tab, and then go back to the Settings tab, Kibana displays the
|
||||
index pattern you last looked at. To get to the create pattern form, click
|
||||
the *Add* button in the Index Patterns list.
|
||||
NOTE: When you switch between top-level tabs, Kibana remembers where you were. For example, if you view a particular
|
||||
index pattern from the Settings tab, switch to the Discover tab, and then go back to the Settings tab, Kibana displays
|
||||
the index pattern you last looked at. To get to the create pattern form, click the *Add* button in the Index Patterns
|
||||
list.
|
||||
|
||||
. If your index contains a timestamp field that you want to use to perform
|
||||
time-based comparisons, select the *Index contains time-based events* option
|
||||
and select the index field that contains the timestamp. Kibana reads the
|
||||
index mapping to list all of the fields that contain a timestamp.
|
||||
. If your index contains a timestamp field that you want to use to perform time-based comparisons, select the *Index
|
||||
contains time-based events* option and select the index field that contains the timestamp. Kibana reads the index
|
||||
mapping to list all of the fields that contain a timestamp.
|
||||
|
||||
. If new indices are generated periodically and have a timestamp appended to
|
||||
the name, select the *Use event times to create index names* option and select
|
||||
the *Index pattern interval*. This enables Kibana to search only those indices
|
||||
that could possibly contain data in the time range you specify. This is
|
||||
primarily applicable if you are using Logstash to feed data into Elasticsearch.
|
||||
. If new indices are generated periodically and have a timestamp appended to the name, select the *Use event times to
|
||||
create index names* option and select the *Index pattern interval*. This enables Kibana to search only those indices
|
||||
that could possibly contain data in the time range you specify. This is primarily applicable if you are using Logstash
|
||||
to feed data into Elasticsearch.
|
||||
|
||||
. Click *Create* to add the index pattern.
|
||||
|
||||
. To designate the new pattern as the default pattern to load when you view
|
||||
the Discover tab, click the *favorite* button.
|
||||
. To designate the new pattern as the default pattern to load when you view the Discover tab, click the *favorite*
|
||||
button.
|
||||
|
||||
[float]
|
||||
[[date-format-tokens]]
|
||||
|
@ -116,10 +109,9 @@ the Discover tab, click the *favorite* button.
|
|||
[float]
|
||||
[[set-default-pattern]]
|
||||
=== Setting the Default Index Pattern
|
||||
The default index pattern is loaded by automatically when you view the *Discover* tab.
|
||||
Kibana displays a star to the left of the name of the default pattern in the Index Patterns list
|
||||
on the *Settings > Indices* tab. The first pattern you create is automatically
|
||||
designated as the default pattern.
|
||||
The default index pattern is loaded by automatically when you view the *Discover* tab. Kibana displays a star to the
|
||||
left of the name of the default pattern in the Index Patterns list on the *Settings > Indices* tab. The first pattern
|
||||
you create is automatically designated as the default pattern.
|
||||
|
||||
To set a different pattern as the default index pattern:
|
||||
|
||||
|
@ -132,13 +124,11 @@ NOTE: You can also manually set the default index pattern in *Advanced > Setting
|
|||
[float]
|
||||
[[reload-fields]]
|
||||
=== Reloading the Index Fields List
|
||||
When you add an index mapping, Kibana automatically scans the indices that
|
||||
match the pattern to display a list of the index fields. You can reload the
|
||||
index fields list to pick up any newly-added fields.
|
||||
When you add an index mapping, Kibana automatically scans the indices that match the pattern to display a list of the
|
||||
index fields. You can reload the index fields list to pick up any newly-added fields.
|
||||
|
||||
Reloading the index fields list also resets Kibana's popularity counters for the fields.
|
||||
The popularity counters keep track of the fields you've used most often within Kibana
|
||||
and are used to sort fields within lists.
|
||||
Reloading the index fields list also resets Kibana's popularity counters for the fields. The popularity counters keep
|
||||
track of the fields you've used most often within Kibana and are used to sort fields within lists.
|
||||
|
||||
To reload the index fields list:
|
||||
|
||||
|
@ -168,20 +158,17 @@ You can also set the field's popularity value in the *Popularity* text entry box
|
|||
[float]
|
||||
[[create-scripted-field]]
|
||||
=== Creating a Scripted Field
|
||||
Scripted fields compute data on the fly from the data in your
|
||||
Elasticsearch indices. Scripted field data is shown on the Discover tab as
|
||||
part of the document data, and you can use scripted fields in your visualizations.
|
||||
(Scripted field values are computed at query time so they aren't indexed and
|
||||
cannot be searched.)
|
||||
Scripted fields compute data on the fly from the data in your Elasticsearch indices. Scripted field data is shown on
|
||||
the Discover tab as part of the document data, and you can use scripted fields in your visualizations.
|
||||
Scripted field values are computed at query time so they aren't indexed and cannot be searched.
|
||||
|
||||
WARNING: Computing data on the fly with scripted fields can be very resource
|
||||
intensive and can have a direct impact on Kibana's performance. Keep in mind
|
||||
that there's no built-in validation of a scripted field. If your scripts are
|
||||
buggy, you'll get exceptions whenever you try to view the dynamically generated
|
||||
data.
|
||||
WARNING: Computing data on the fly with scripted fields can be very resource intensive and can have a direct impact on
|
||||
Kibana's performance. Keep in mind that there's no built-in validation of a scripted field. If your scripts are
|
||||
buggy, you'll get exceptions whenever you try to view the dynamically generated data.
|
||||
|
||||
Scripted fields use the Lucene expression syntax. For more information,
|
||||
see http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html#_lucene_expressions_scripts[Lucene Expressions Scripts].
|
||||
see http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html#_lucene_expressions_scripts[
|
||||
Lucene Expressions Scripts].
|
||||
|
||||
You can reference any single value numeric field in your expressions, for example:
|
||||
|
||||
|
@ -196,8 +183,7 @@ To create a scripted field:
|
|||
. Go to the pattern's *Scripted Fields* tab.
|
||||
. Click *Add Scripted Field*.
|
||||
. Enter a name for the scripted field.
|
||||
. Enter the expression that you want to use to compute a value on the fly
|
||||
from your index data.
|
||||
. Enter the expression that you want to use to compute a value on the fly from your index data.
|
||||
. Click *Save Scripted Field*.
|
||||
|
||||
For more information about scripted fields in Elasticsearch, see
|
||||
|
@ -215,10 +201,8 @@ To modify a scripted field:
|
|||
. Click the *Edit* button for the scripted field you want to change.
|
||||
. Make your changes and then click *Save Scripted Field* to update the field.
|
||||
|
||||
WARNING: Keep in mind
|
||||
that there's no built-in validation of a scripted field. If your scripts are
|
||||
buggy, you'll get exceptions whenever you try to view the dynamically generated
|
||||
data.
|
||||
WARNING: Keep in mind that there's no built-in validation of a scripted field. If your scripts are buggy, you'll get
|
||||
exceptions whenever you try to view the dynamically generated data.
|
||||
|
||||
[float]
|
||||
[[delete-scripted-field]]
|
||||
|
@ -231,13 +215,12 @@ To delete a scripted field:
|
|||
|
||||
[[advanced-options]]
|
||||
=== Setting Advanced Options
|
||||
The Advanced Settings page enables you to directly edit settings that control
|
||||
the behavior of the Kibana application. For example, you can change the format
|
||||
used to display dates, specify the default index pattern, and set the precision
|
||||
The Advanced Settings page enables you to directly edit settings that control the behavior of the Kibana application.
|
||||
For example, you can change the format used to display dates, specify the default index pattern, and set the precision
|
||||
for displayed decimal values.
|
||||
|
||||
WARNING: Changing advanced settings can have unintended consequences. If you aren't
|
||||
sure what you're doing, it's best to leave these settings as-is.
|
||||
WARNING: Changing advanced settings can have unintended consequences. If you aren't sure what you're doing, it's best
|
||||
to leave these settings as-is.
|
||||
|
||||
To set advanced options:
|
||||
|
||||
|
@ -253,30 +236,26 @@ To set advanced options:
|
|||
You can view, edit, and delete saved searches, visualizations, and dashboards from *Settings > Objects*. You can also
|
||||
export or import sets of searches, visualizations, and dashboards.
|
||||
|
||||
Viewing a saved object displays the selected item in the *Discover*, *Visualize*,
|
||||
or *Dashboard* page. To view a saved object:
|
||||
Viewing a saved object displays the selected item in the *Discover*, *Visualize*, or *Dashboard* page. To view a saved
|
||||
object:
|
||||
|
||||
. Go to *Settings > Objects*.
|
||||
. Select the object you want to view.
|
||||
. Click the *View* button.
|
||||
|
||||
Editing a saved object enables you to directly modify the object definition.
|
||||
You can change the name of the object, add a description, and modify the
|
||||
JSON that defines the object's properties.
|
||||
Editing a saved object enables you to directly modify the object definition. You can change the name of the object, add
|
||||
a description, and modify the JSON that defines the object's properties.
|
||||
|
||||
If you attempt to access an object whose index has been deleted, Kibana displays
|
||||
its Edit Object page. You can:
|
||||
If you attempt to access an object whose index has been deleted, Kibana displays its Edit Object page. You can:
|
||||
|
||||
* Recreate the index so you can continue using the object.
|
||||
* Delete the object and recreate it using a different index.
|
||||
* Change the index name referenced in the object's `kibanaSavedObjectMeta.searchSourceJSON`
|
||||
to point to an existing index pattern. This is useful if the index you were working
|
||||
with has been renamed.
|
||||
* Change the index name referenced in the object's `kibanaSavedObjectMeta.searchSourceJSON` to point to an existing
|
||||
index pattern. This is useful if the index you were working with has been renamed.
|
||||
|
||||
WARNING: No validation is performed for object properties. Submitting invalid
|
||||
changes will render the object unusable. Generally, you should use the
|
||||
*Discover*, *Visualize*, or *Dashboard* pages to create new objects instead of
|
||||
directly editing existing ones.
|
||||
WARNING: No validation is performed for object properties. Submitting invalid changes will render the object unusable.
|
||||
Generally, you should use the *Discover*, *Visualize*, or *Dashboard* pages to create new objects instead of directly
|
||||
editing existing ones.
|
||||
|
||||
To edit a saved object:
|
||||
|
||||
|
@ -310,64 +289,135 @@ To import a set of objects:
|
|||
[[kibana-server-properties]]
|
||||
=== Setting Kibana Server Properties
|
||||
|
||||
The Kibana server reads properties from the `kibana.yml` file on startup. The default
|
||||
settings configure Kibana to run on `localhost:5601`. To change the host or port number, or
|
||||
connect to Elasticsearch running on a different machine, you'll need to update your `kibana.yml` file. You can also
|
||||
enable SSL and set a variety of other options.
|
||||
The Kibana server reads properties from the `kibana.yml` file on startup. The default settings configure Kibana to run
|
||||
on `localhost:5601`. To change the host or port number, or connect to Elasticsearch running on a different machine,
|
||||
you'll need to update your `kibana.yml` file. You can also enable SSL and set a variety of other options.
|
||||
|
||||
deprecated[4.2, The names of several Kibana server properties changed in the 4.2 release of Kibana. The previous names remain as functional aliases, but are now deprecated and will be removed in a future release of Kibana]
|
||||
|
||||
[horizontal]
|
||||
.Kibana Server Properties
|
||||
|===
|
||||
|Property |Description
|
||||
`server.port` added[4.2]:: The port that the Kibana server runs on.
|
||||
+
|
||||
*alias*: `port` deprecated[4.2]
|
||||
+
|
||||
*default*: `5601`
|
||||
|
||||
|`port`
|
||||
|The port that the Kibana server runs on. Default: `port: 5601`.
|
||||
`server.host` added[4.2]:: The host to bind the Kibana server to.
|
||||
+
|
||||
*alias*: `host` deprecated[4.2]
|
||||
+
|
||||
*default*: `"0.0.0.0"`
|
||||
|
||||
|`host`
|
||||
|The host to bind the Kibana server to. Default: `host: "0.0.0.0"`.
|
||||
`elasticsearch.url` added[4.2]:: The Elasticsearch instance where the indices you want to query reside.
|
||||
+
|
||||
*alias*: `elasticsearch_url` deprecated[4.2]
|
||||
+
|
||||
*default*: `"http://localhost:9200"`
|
||||
|
||||
|`elasticsearch_url`
|
||||
|The Elasticsearch instance where the indices you want to query reside. Default: `elasticsearch_url:
|
||||
"http://localhost:9200"`.
|
||||
`elasticsearch.preserveHost` added[4.2]:: By default, the host specified in the incoming request from the browser is specified as the host in the corresponding request Kibana sends to Elasticsearch. If you set this option to `false`, Kibana uses the host specified in `elasticsearch_url`.
|
||||
+
|
||||
*alias*: `elasticsearch_preserve_host` deprecated[4.2]
|
||||
+
|
||||
*default*: `true`
|
||||
|
||||
|`elasticsearch_preserve_host`
|
||||
|By default, the host specified in the incoming request from the browser is specified as the host in the
|
||||
corresponding request Kibana sends to Elasticsearch. If you set this option to `false`, Kibana uses the host
|
||||
specified in `elasticsearch_url`. You probably don't need to worry about this setting--just use the default.
|
||||
Default: `elasticsearch_preserve_host: true`.
|
||||
`elasticsearch.ssl.cert` added[4.2]:: This parameter specifies the path to the SSL certificate for Elasticsearch instances that require a client certificate.
|
||||
+
|
||||
*alias*: `kibana_elasticsearch_client_crt` deprecated[4.2]
|
||||
|
||||
|`kibana_index`
|
||||
|The name of the index where saved searched, visualizations, and dashboards will be stored. Default: `kibana_index: .kibana`.
|
||||
`elasticsearch.ssl.key` added[4.2]:: This parameter specifies the path to the SSL key for Elasticsearch instances that require a client key.
|
||||
+
|
||||
*alias*: `kibana_elasticsearch_client_key` deprecated[4.2]
|
||||
|
||||
|`default_app_id`
|
||||
|The page that will be displayed when you launch Kibana: `discover`, `visualize`, `dashboard`, or `settings`. Default:
|
||||
`default_app_id: "discover"`.
|
||||
`elasticsearch.password` added[4.2]:: This parameter specifies the password for Elasticsearch instances that use HTTP basic authentication. Kibana users still need to authenticate with Elasticsearch, which is proxied through the Kibana server.
|
||||
+
|
||||
*alias*: `kibana_elasticsearch_password` deprecated [4.2]
|
||||
|
||||
|`request_timeout`
|
||||
|How long to wait for responses from the Kibana backend or Elasticsearch, in milliseconds. Default: `request_timeout: 500000`.
|
||||
`elasticsearch.username` added[4.2]:: This parameter specifies the username for Elasticsearch instances that use HTTP basic authentication. Kibana users still need to authenticate with Elasticsearch, which is proxied through the Kibana server.
|
||||
+
|
||||
*alias*: `kibana_elasticsearch_username` deprecated[4.2]
|
||||
|
||||
|`shard_timeout`
|
||||
|How long Elasticsearch should wait for responses from shards. Set to 0 to disable. Default: `shard_timeout: 0`.
|
||||
`elasticsearch.pingTimeout` added[4.2]:: This parameter specifies the maximum wait time in milliseconds for ping responses by Elasticsearch.
|
||||
+
|
||||
*alias*: `ping_timeout` deprecated[4.2]
|
||||
+
|
||||
*default*: `1500`
|
||||
|
||||
|`verify_ssl`
|
||||
|Indicates whether or not to validate the Elasticsearch SSL certificate. Set to false to disable SSL verification.
|
||||
Default: `verify_ssl: true`.
|
||||
`elasticsearch.startupTimeout` added[4.2]:: This parameter specifies the maximum wait time in milliseconds for Elasticsearch discovery at Kibana startup. Kibana repeats attempts to discover an Elasticsearch cluster after the specified time elapses.
|
||||
+
|
||||
*alias*: `startup_timeout` deprecated[4.2]
|
||||
+
|
||||
*default*: `5000`
|
||||
|
||||
|`ca`
|
||||
|The path to the CA certificate for your Elasticsearch instance. Specify if you are using a self-signed certificate
|
||||
so the certificate can be verified. (Otherwise, you have to disable `verify_ssl`.) Default: none.
|
||||
`kibana.index` added[4.2]:: The name of the index where saved searched, visualizations, and dashboards will be stored..
|
||||
+
|
||||
*alias*: `kibana_index` deprecated[4.2]
|
||||
+
|
||||
*default*: `.kibana`
|
||||
|
||||
|`ssl_key_file`
|
||||
|The path to your Kibana server's key file. Must be set to encrypt communications between the browser and Kibana. Default: none.
|
||||
`kibana.defaultAppId` added[4.2]:: The page that will be displayed when you launch Kibana: `discover`, `visualize`, `dashboard`, or `settings`.
|
||||
+
|
||||
*alias*: `default_app_id` deprecated[4.2]
|
||||
+
|
||||
*default*: `"discover"`
|
||||
|
||||
|`ssl_cert_file`
|
||||
|The path to your Kibana server's certificate file. Must be set to encrypt communications between the browser and Kibana. Default: none.
|
||||
`logging.silent` added[4.2]:: Set this value to `true` to suppress all logging output.
|
||||
+
|
||||
*default*: `false`
|
||||
|
||||
|`pid_file`
|
||||
|The location where you want to store the process ID file. If not specified, the PID file is stored in
|
||||
`/var/run/kibana.pid`. Default: none.
|
||||
`logging.quiet` added[4.2]:: Set this value to `true` to suppress all logging output except for log messages tagged `error`, `fatal`, or Hapi.js errors.
|
||||
+
|
||||
*default*: `false`
|
||||
|
||||
|`log_file`
|
||||
|The location where you want to store the Kibana's log output. If not specified, log output is written to standard
|
||||
output and not stored. Specifying a log file suppresses log writes to standard output. Default: none.
|
||||
`logging.verbose` added[4.2]:: Set this value to `true` to log all events, including system usage information and all requests.
|
||||
+
|
||||
*default*: `false`
|
||||
|
||||
|===
|
||||
`logging.events` added[4.2]:: You can specify a map of log types to output tags for this parameter to create a customized set of loggable events, as in the following example:
|
||||
+
|
||||
[source,json]
|
||||
{
|
||||
log: ['info', 'warning', 'error', 'fatal'],
|
||||
response: '*',
|
||||
error: '*'
|
||||
}
|
||||
|
||||
`elasticsearch.requestTimeout` added[4.2]:: How long to wait for responses from the Kibana backend or Elasticsearch, in milliseconds.
|
||||
+
|
||||
*alias*: `request_timeout` deprecated[4.2]
|
||||
+
|
||||
*default*: `500000`
|
||||
|
||||
`elasticsearch.shardTimeout` added[4.2]:: How long Elasticsearch should wait for responses from shards. Set to 0 to disable.
|
||||
+
|
||||
*alias*: `shard_timeout` deprecated[4.2]
|
||||
+
|
||||
*default*: `0`
|
||||
|
||||
`elasticsearch.ssl.verify` added[4.2]:: Indicates whether or not to validate the Elasticsearch SSL certificate. Set to false to disable SSL verification.
|
||||
+
|
||||
*alias*: `verify_ssl` deprecated[4.2]
|
||||
+
|
||||
*default*: `true`
|
||||
|
||||
`elasticsearch.ssl.ca` added[4.2]:: The path to the CA certificate for your Elasticsearch instance. Specify if you are using a self-signed certificate so the certificate can be verified. Disable `elasticsearch.ssl.verify` otherwise.
|
||||
+
|
||||
*alias*: `ca` deprecated[4.2]
|
||||
|
||||
`server.ssl.key` added[4.2]:: The path to your Kibana server's key file. Must be set to encrypt communications between the browser and Kibana.
|
||||
+
|
||||
*alias*: `ssl_key_file` deprecated[4.2]
|
||||
|
||||
`server.ssl.cert` added[4.2]:: The path to your Kibana server's certificate file. Must be set to encrypt communications between the browser and Kibana.
|
||||
+
|
||||
*alias*: `ssl_cert_file` deprecated[4.2]
|
||||
|
||||
`pid.file` added[4.2]:: The location where you want to store the process ID file.
|
||||
+
|
||||
*alias*: `pid_file` deprecated[4.2]
|
||||
+
|
||||
*default*: `/var/run/kibana.pid`
|
||||
|
||||
`logging.dest` added[4.2]:: The location where you want to store the Kibana's log output. If not specified, log output is written to standard output and not stored. Specifying a log file suppresses log writes to standard output.
|
||||
+
|
||||
*alias*: `log_file` deprecated[4.2]
|
||||
|
|
|
@ -62,7 +62,8 @@ remove a range.
|
|||
or bottom _n_ elements of a given field to display, ordered by count or a custom metric.
|
||||
*Filters*:: You can specify a set of {ref}/search-aggregations-bucket-filters-aggregation.html[_filters_] for the data.
|
||||
You can specify a filter as a query string or in JSON format, just as in the Discover search bar. Click *Add Filter* to
|
||||
add another filter.
|
||||
add another filter. Click the image:images/labelbutton.png[] *label* button to open the label field, where you can type
|
||||
in a name to display on the visualization.
|
||||
*Significant Terms*:: Displays the results of the experimental
|
||||
{ref}/search-aggregations-bucket-significantterms-aggregation.html[_significant terms_] aggregation. The value of the
|
||||
*Size* parameter defines the number of entries this aggregation returns.
|
||||
|
|
|
@ -28,7 +28,8 @@ remove a range.
|
|||
or bottom _n_ elements of a given field to display, ordered by count or a custom metric.
|
||||
*Filters*:: You can specify a set of {ref}/search-aggregations-bucket-filters-aggregation.html[_filters_] for the data.
|
||||
You can specify a filter as a query string or in JSON format, just as in the Discover search bar. Click *Add Filter* to
|
||||
add another filter.
|
||||
add another filter. Click the images:labelbutton.png[] *label* button to open the label field, where you can type in a
|
||||
name to display on the visualization.
|
||||
*Significant Terms*:: Displays the results of the experimental
|
||||
{ref}/search-aggregations-bucket-significantterms-aggregation.html[_significant terms_] aggregation.
|
||||
|
||||
|
|
5546
npm-shrinkwrap.json
generated
5546
npm-shrinkwrap.json
generated
File diff suppressed because it is too large
Load diff
21
package.json
21
package.json
|
@ -13,8 +13,8 @@
|
|||
"private": false,
|
||||
"version": "4.2.0-snapshot",
|
||||
"build": {
|
||||
"number": 8173,
|
||||
"sha": "0102888deb393e4141369fbd1644a5d77f8732da"
|
||||
"number": 8467,
|
||||
"sha": "6cb7fec4e154faa0a4a3fee4b33dfef91b9870d9"
|
||||
},
|
||||
"main": "src/server/KbnServer.js",
|
||||
"homepage": "https://www.elastic.co/products/kibana",
|
||||
|
@ -42,7 +42,8 @@
|
|||
"build": "grunt build",
|
||||
"start": "./bin/kibana --dev",
|
||||
"precommit": "grunt lintStagedFiles",
|
||||
"karma": "karma start"
|
||||
"karma": "karma start",
|
||||
"elasticsearch": "grunt esvm:dev:keepalive"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -62,8 +63,8 @@
|
|||
"angular-elastic": "2.5.0",
|
||||
"angular-route": "1.2.28",
|
||||
"ansicolors": "^0.3.2",
|
||||
"autoprefixer": "^5.2.0",
|
||||
"autoprefixer-loader": "^2.0.0",
|
||||
"autoprefixer": "5.1.x",
|
||||
"autoprefixer-loader": "2.0.x",
|
||||
"babel": "^5.8.21",
|
||||
"babel-core": "^5.8.22",
|
||||
"babel-loader": "^5.3.2",
|
||||
|
@ -76,8 +77,8 @@
|
|||
"commander": "^2.8.1",
|
||||
"css-loader": "^0.15.1",
|
||||
"d3": "^3.5.6",
|
||||
"elasticsearch": "^5.0.0",
|
||||
"elasticsearch-browser": "^5.0.0",
|
||||
"elasticsearch": "^8.0.1",
|
||||
"elasticsearch-browser": "^8.0.1",
|
||||
"expiry-js": "^0.1.7",
|
||||
"exports-loader": "^0.6.2",
|
||||
"expose-loader": "^0.7.0",
|
||||
|
@ -125,9 +126,9 @@
|
|||
"Nonsense": "^0.1.2",
|
||||
"angular-mocks": "1.2.28",
|
||||
"auto-release-sinon": "^1.0.3",
|
||||
"babel-eslint": "^4.0.5",
|
||||
"babel-eslint": "^4.1.1",
|
||||
"chokidar": "^1.0.4",
|
||||
"eslint": "1.0.x",
|
||||
"eslint": "^1.3.1",
|
||||
"expect.js": "^0.3.1",
|
||||
"faker": "^1.1.0",
|
||||
"glob": "^4.3.2",
|
||||
|
@ -141,7 +142,7 @@
|
|||
"grunt-run": "^0.4.0",
|
||||
"grunt-s3": "^0.2.0-alpha.3",
|
||||
"grunt-simple-mocha": "^0.4.0",
|
||||
"gruntify-eslint": "^1.0.0",
|
||||
"gruntify-eslint": "^1.0.1",
|
||||
"html-entities": "^1.1.1",
|
||||
"husky": "^0.8.1",
|
||||
"istanbul-instrumenter-loader": "^0.1.3",
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
require('babel/register')(require('../optimize/babelOptions'));
|
||||
require('babel/register')(require('../optimize/babelOptions').node);
|
||||
require('./cli');
|
||||
|
|
|
@ -114,7 +114,7 @@ class BaseOptimizer {
|
|||
test: /\.js$/,
|
||||
exclude: babelExclude.concat(this.env.noParse),
|
||||
loader: 'babel',
|
||||
query: babelOptions
|
||||
query: babelOptions.webpack
|
||||
},
|
||||
{
|
||||
test: /\.jsx$/,
|
||||
|
@ -122,7 +122,7 @@ class BaseOptimizer {
|
|||
loader: 'babel',
|
||||
query: defaults({
|
||||
nonStandard: true,
|
||||
}, babelOptions)
|
||||
}, babelOptions.webpack)
|
||||
}
|
||||
].concat(this.env.loaders),
|
||||
postLoaders: this.env.postLoaders || [],
|
||||
|
@ -130,7 +130,7 @@ class BaseOptimizer {
|
|||
},
|
||||
|
||||
resolve: {
|
||||
extensions: ['.babel.js', '.js', '.less', ''],
|
||||
extensions: ['.js', '.jsx', '.less', ''],
|
||||
postfixes: [''],
|
||||
modulesDirectories: ['webpackShims', 'node_modules'],
|
||||
loaderPostfixes: ['-loader', ''],
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
var _ = require('lodash');
|
||||
var fromRoot = require('requirefrom')('src/utils')('fromRoot');
|
||||
|
||||
var babelOpts = _.defaults({
|
||||
exports.webpack = {
|
||||
stage: 1,
|
||||
nonStandard: false,
|
||||
optional: ['runtime']
|
||||
};
|
||||
|
||||
exports.node = Object.assign({
|
||||
ignore: [
|
||||
fromRoot('src'),
|
||||
/[\\\/](node_modules|bower_components)[\\\/]/
|
||||
]
|
||||
}, require('../optimize/babelOptions'));
|
||||
|
||||
require('babel/register')(babelOpts);
|
||||
require('./cli');
|
||||
}, exports.webpack);
|
|
@ -1,4 +1,7 @@
|
|||
module.exports = {
|
||||
exports.webpack = {
|
||||
stage: 1,
|
||||
nonStandard: false
|
||||
nonStandard: false,
|
||||
optional: ['runtime']
|
||||
};
|
||||
|
||||
exports.node = Object.assign({}, exports.webpack);
|
||||
|
|
|
@ -23,7 +23,7 @@ module.exports = function (kibana) {
|
|||
cert: Joi.string(),
|
||||
key: Joi.string()
|
||||
}).default(),
|
||||
apiVersion: Joi.string().default('master'),
|
||||
apiVersion: Joi.string().default('2.0'),
|
||||
minimumVerison: Joi.string().default('2.0.0')
|
||||
}).default();
|
||||
},
|
||||
|
|
|
@ -113,6 +113,85 @@
|
|||
|
||||
Desaturate map tiles
|
||||
|
||||
<kbn-info info="Reduce the vibrancy of tile colors, this does not work in any version of Internet Explorer"
|
||||
<kbn-info info="Reduce the vibrancy of tile colors, this does not work in any version of Internet Explorer"></kbn-info>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="vis-option-item form-group">
|
||||
<label>
|
||||
<input type="checkbox"
|
||||
name="wms.enabled"
|
||||
ng-model="vis.params.wms.enabled">
|
||||
|
||||
WMS compliant map server
|
||||
|
||||
<kbn-info info="Use WMS compliant map tile server. For advanced users only."></kbn-info>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div ng-show="vis.params.wms.enabled" class="well">
|
||||
<div class="vis-option-item form-group">
|
||||
|
||||
<p>
|
||||
WMS maps are 3rd party mapping services that have not been verified to work with Kibana.
|
||||
These should be considered expert settings.
|
||||
</p>
|
||||
|
||||
<label>
|
||||
WMS url*
|
||||
</label>
|
||||
<input type="text" class="form-control"
|
||||
name="wms.url"
|
||||
ng-model="vis.params.wms.url">
|
||||
</div>
|
||||
|
||||
<div class="vis-option-item form-group">
|
||||
<label>
|
||||
WMS layers* <kbn-info info="A comma seperated list of layers to use."></kbn-info>
|
||||
</label>
|
||||
<input type="text" class="form-control"
|
||||
ng-require="vis.params.wms.enabled"
|
||||
ng-model="vis.params.wms.options.layers"
|
||||
name="wms.options.layers">
|
||||
</div>
|
||||
|
||||
<div class="vis-option-item form-group">
|
||||
<label>
|
||||
WMS version* <kbn-info info="The version of WMS the server supports"></kbn-info>
|
||||
</label>
|
||||
<input type="text" class="form-control"
|
||||
name="wms.options.version"
|
||||
ng-model="vis.params.wms.options.version">
|
||||
</div>
|
||||
|
||||
<div class="vis-option-item form-group">
|
||||
<label>
|
||||
WMS format* <kbn-info info="Usually image/png or image/jpeg. Use png if the server will return transparent layers"></kbn-info>
|
||||
</label>
|
||||
<input type="text" class="form-control"
|
||||
name="wms.options.format"
|
||||
ng-model="vis.params.wms.options.format">
|
||||
</div>
|
||||
|
||||
<div class="vis-option-item form-group">
|
||||
<label>
|
||||
WMS attribution <kbn-info info="Attribution string for the lower right corner<"></kbn-info>
|
||||
</label>
|
||||
<input type="text" class="form-control"
|
||||
name="wms.options.attribution"
|
||||
ng-model="vis.params.wms.options.attribution">
|
||||
</div>
|
||||
|
||||
<div class="vis-option-item form-group">
|
||||
<label>
|
||||
WMS styles* <kbn-info info="A comma seperated list of WMS server supported styles to use. Blank in most cases."></kbn-info>
|
||||
</label>
|
||||
<input type="text" class="form-control"
|
||||
name="wms.options.styles"
|
||||
ng-model="vis.params.wms.options.styles">
|
||||
</div>
|
||||
|
||||
<p>* if this parameter is incorrect, maps will fail to load.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -22,6 +22,7 @@ define(function (require) {
|
|||
heatRadius: 25,
|
||||
heatBlur: 15,
|
||||
heatNormalizeData: true,
|
||||
wms: config.get('visualization:tileMap:WMSdefaults')
|
||||
},
|
||||
mapTypes: ['Scaled Circle Markers', 'Shaded Circle Markers', 'Shaded Geohash Grid', 'Heatmap'],
|
||||
canDesaturate: !!supports.cssFilters,
|
||||
|
|
|
@ -39,7 +39,8 @@ module.exports = function (kibana) {
|
|||
|
||||
return {
|
||||
kbnIndex: config.get('kibana.index'),
|
||||
esShardTimeout: config.get('elasticsearch.shardTimeout')
|
||||
esShardTimeout: config.get('elasticsearch.shardTimeout'),
|
||||
esApiVersion: config.get('elasticsearch.apiVersion'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
<div class="panel panel-default" ng-switch on="panel.type" ng-if="savedObj || error">
|
||||
<div class="panel-heading">
|
||||
<span class="panel-title">{{savedObj.title}}</span>
|
||||
<span class="panel-title">
|
||||
<i
|
||||
class="fa"
|
||||
ng-class="savedObj.vis.type.icon"
|
||||
aria-label="{{savedObj.vis.type.title}} Icon"
|
||||
title="{{savedObj.vis.type.title}}">
|
||||
</i>
|
||||
{{savedObj.title}}
|
||||
</span>
|
||||
<div class="btn-group">
|
||||
<a aria-label="Edit" ng-show="chrome.getVisible() && editUrl" ng-href="{{editUrl}}">
|
||||
<i aria-hidden="true" class="fa fa-pencil"></i>
|
||||
|
|
|
@ -76,6 +76,12 @@ dashboard-grid {
|
|||
|
||||
.ellipsis();
|
||||
flex: 1 1 auto;
|
||||
|
||||
i {
|
||||
opacity: 0.3;
|
||||
font-size: 1.2em;
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
(Default: <i>{{conf.defVal == undefined ? 'null' : conf.defVal}}</i>)
|
||||
</span>
|
||||
<br>
|
||||
<span class="smaller">{{conf.description}}</span>
|
||||
<span class="smaller" ng-bind-html="conf.description | trustAsHtml"></span>
|
||||
</td>
|
||||
<td class="value">
|
||||
|
||||
|
|
|
@ -155,10 +155,13 @@ define(function (require) {
|
|||
var pattern = mockIndexPattern(index);
|
||||
|
||||
return indexPatterns.mapper.getIndicesForIndexPattern(pattern)
|
||||
.catch(notify.error)
|
||||
.catch(function (err) {
|
||||
if (err instanceof IndexPatternMissingIndices) return;
|
||||
notify.error(err);
|
||||
})
|
||||
.then(function (existing) {
|
||||
var all = existing.all;
|
||||
var matches = existing.matches;
|
||||
var all = _.get(existing, 'all', []);
|
||||
var matches = _.get(existing, 'matches', []);
|
||||
if (all.length) {
|
||||
index.existing = {
|
||||
class: 'success',
|
||||
|
|
|
@ -130,7 +130,8 @@
|
|||
|
||||
<div class="vis-editor-canvas" ng-class="{ embedded: !chrome.getVisible() }">
|
||||
<div class="visualize-info" ng-if="savedVis.id">
|
||||
<div class="visualize-info-tab">
|
||||
<div class="visualize-info-tab" title="{{savedVis.vis.type.title}}">
|
||||
<i class="fa" aria-label="{{savedVis.vis.type.title}} Icon" ng-class="savedVis.vis.type.icon"></i>
|
||||
<span bindonce bo-bind="savedVis.title"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,41 +1,37 @@
|
|||
module.exports = function ({env, bundle}) {
|
||||
|
||||
module.exports = require('lodash').template(
|
||||
`
|
||||
let pluginSlug = env.pluginInfo.sort()
|
||||
.map(p => ' * - ' + p)
|
||||
.join('\n');
|
||||
|
||||
let requires = bundle.modules
|
||||
.map(m => `require('${m}');`)
|
||||
.join('\n');
|
||||
|
||||
return `
|
||||
/**
|
||||
* Test entry file
|
||||
*
|
||||
* This is programatically created and updated, do not modify
|
||||
*
|
||||
* context: <%= JSON.stringify(env.context) %>
|
||||
* context: ${JSON.stringify(env.context)}
|
||||
* includes code from:
|
||||
<%
|
||||
|
||||
env.pluginInfo.sort().forEach(function (plugin, i) {
|
||||
if (i > 0) print('\\n');
|
||||
print(' * - ' + plugin);
|
||||
});
|
||||
|
||||
%>
|
||||
${pluginSlug}
|
||||
*
|
||||
*/
|
||||
|
||||
window.__KBN__ = {
|
||||
vars: {
|
||||
kbnIndex: '.kibana',
|
||||
esShardTimeout: 1500
|
||||
esShardTimeout: 1500,
|
||||
esApiVersion: '2.0',
|
||||
}
|
||||
};
|
||||
|
||||
require('ui/testHarness');
|
||||
<%
|
||||
|
||||
bundle.modules.forEach(function (id, i) {
|
||||
if (i > 0) print('\\n');
|
||||
print(\`require('\${id.replace(/\\\\/g, '\\\\\\\\')}');\`);
|
||||
});
|
||||
|
||||
%>
|
||||
${requires}
|
||||
require('ui/testHarness').bootstrap(/* go! */);
|
||||
|
||||
`
|
||||
);
|
||||
`;
|
||||
|
||||
};
|
||||
|
|
|
@ -14,7 +14,7 @@ module.exports = class KbnLogger {
|
|||
this.dest = process.stdout;
|
||||
} else {
|
||||
this.dest = writeStr(config.dest, {
|
||||
mode: 'a',
|
||||
flags: 'a',
|
||||
encoding: 'utf8'
|
||||
});
|
||||
}
|
||||
|
|
|
@ -9,6 +9,9 @@ module.exports = class PluginApi {
|
|||
this.package = require(join(pluginPath, 'package.json'));
|
||||
this.autoload = require('../../ui/autoload');
|
||||
this.Plugin = Plugin.scoped(kibana, pluginPath, this.package);
|
||||
this.mixin = _.bindKey(kibana, 'mixin');
|
||||
}
|
||||
|
||||
get uiExports() {
|
||||
throw new Error('plugin.uiExports is not defined until initialize phase');
|
||||
}
|
||||
};
|
||||
|
|
|
@ -5,16 +5,20 @@ let PluginApi = require('./PluginApi');
|
|||
let Collection = require('requirefrom')('src')('utils/Collection');
|
||||
|
||||
let byIdCache = Symbol('byIdCache');
|
||||
let pluginApis = Symbol('pluginApis');
|
||||
|
||||
module.exports = class Plugins extends Collection {
|
||||
|
||||
constructor(kbnServer) {
|
||||
super();
|
||||
this.kbnServer = kbnServer;
|
||||
this[pluginApis] = new Set();
|
||||
}
|
||||
|
||||
async new(path) {
|
||||
let api = new PluginApi(this.kbnServer, path);
|
||||
this[pluginApis].add(api);
|
||||
|
||||
let output = [].concat(require(path)(api) || []);
|
||||
let config = this.kbnServer.config;
|
||||
|
||||
|
@ -42,4 +46,8 @@ module.exports = class Plugins extends Collection {
|
|||
return this[byIdCache] || (this[byIdCache] = indexBy([...this], 'id'));
|
||||
}
|
||||
|
||||
getPluginApis() {
|
||||
return this[pluginApis];
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -7,8 +7,18 @@ module.exports = async function (kbnServer, server, config) {
|
|||
}
|
||||
|
||||
let { plugins } = kbnServer;
|
||||
let path = [];
|
||||
|
||||
// extend plugin apis with additional context
|
||||
plugins.getPluginApis().forEach(api => {
|
||||
|
||||
Object.defineProperty(api, 'uiExports', {
|
||||
value: kbnServer.uiExports
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
let path = [];
|
||||
async function initialize(id) {
|
||||
let plugin = plugins.byId[id];
|
||||
|
||||
|
@ -27,7 +37,6 @@ module.exports = async function (kbnServer, server, config) {
|
|||
}
|
||||
|
||||
await plugin.init();
|
||||
|
||||
path.pop();
|
||||
};
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class Status extends EventEmitter {
|
|||
tags.push(this.state === 'red' ? 'error' : 'info');
|
||||
|
||||
server.log(tags, {
|
||||
tmpl: 'Status changed from <%= prevState %> to <%= state %><% message && print(` - ${message}`) %>',
|
||||
tmpl: 'Status changed from <%= prevState %> to <%= state %><%= message ? " - " + message : "" %>',
|
||||
name: name,
|
||||
state: this.state,
|
||||
message: this.message,
|
||||
|
|
|
@ -1,37 +1,29 @@
|
|||
module.exports = function ({env, bundle}) {
|
||||
|
||||
module.exports = require('lodash').template(
|
||||
`
|
||||
let pluginSlug = env.pluginInfo.sort()
|
||||
.map(p => ' * - ' + p)
|
||||
.join('\n');
|
||||
|
||||
let requires = bundle.modules
|
||||
.map(m => `require('${m}');`)
|
||||
.join('\n');
|
||||
|
||||
return `
|
||||
/**
|
||||
* Optimized application entry file
|
||||
* Test entry file
|
||||
*
|
||||
* This is programatically created and updated, do not modify
|
||||
*
|
||||
* context: <%= JSON.stringify(env.context) %>
|
||||
* context: ${JSON.stringify(env.context)}
|
||||
* includes code from:
|
||||
<%
|
||||
|
||||
env.pluginInfo.sort().forEach(function (plugin) {
|
||||
print(\` * - \${plugin}\n\`);
|
||||
});
|
||||
|
||||
%> *
|
||||
${pluginSlug}
|
||||
*
|
||||
*/
|
||||
|
||||
require('ui/chrome');
|
||||
<%
|
||||
|
||||
bundle.modules
|
||||
.filter(function (id) {
|
||||
return id !== 'ui/chrome';
|
||||
})
|
||||
.forEach(function (id, i) {
|
||||
|
||||
if (i > 0) print('\\n');
|
||||
print(\`require('\${id}');\`);
|
||||
|
||||
});
|
||||
|
||||
%>
|
||||
require('ui/chrome')
|
||||
${requires}
|
||||
require('ui/chrome').bootstrap(/* xoxo */);
|
||||
`
|
||||
);
|
||||
|
||||
`;
|
||||
|
||||
};
|
||||
|
|
|
@ -70,7 +70,10 @@ define(function (require) {
|
|||
if (_.isString(this.type)) this.type = visTypes.byName[this.type];
|
||||
|
||||
this.listeners = _.assign({}, state.listeners, this.type.listeners);
|
||||
this.params = _.defaults({}, _.cloneDeep(state.params || {}), this.type.params.defaults || {});
|
||||
this.params = _.defaults({},
|
||||
_.cloneDeep(state.params || {}),
|
||||
_.cloneDeep(this.type.params.defaults || {})
|
||||
);
|
||||
|
||||
this.aggs = new AggConfigs(this, state.aggs);
|
||||
};
|
||||
|
|
|
@ -38,8 +38,7 @@ describe('AggConfig Filters', function () {
|
|||
expect(filter.range).to.have.property('bytes');
|
||||
expect(filter.range.bytes).to.have.property('gte', 2048);
|
||||
expect(filter.range.bytes).to.have.property('lt', 3072);
|
||||
|
||||
expect(filter.meta).to.have.property('formattedValue', '2,048');
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
@ -41,7 +41,7 @@ describe('AggConfig Filters', function () {
|
|||
expect(filter.range).to.have.property('bytes');
|
||||
expect(filter.range.bytes).to.have.property('gte', 1024.0);
|
||||
expect(filter.range.bytes).to.have.property('lt', 2048.0);
|
||||
expect(filter.meta).to.have.property('formattedValue', '1,024 to 2,048');
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
@ -5,10 +5,12 @@ define(function (require) {
|
|||
return function (aggConfig, key) {
|
||||
var value = parseInt(key, 10);
|
||||
|
||||
return buildRangeFilter(aggConfig.params.field, {
|
||||
gte: value,
|
||||
lt: value + aggConfig.params.interval
|
||||
}, aggConfig.vis.indexPattern);
|
||||
return buildRangeFilter(
|
||||
aggConfig.params.field,
|
||||
{gte: value, lt: value + aggConfig.params.interval},
|
||||
aggConfig.vis.indexPattern,
|
||||
aggConfig.fieldFormatter()(key)
|
||||
);
|
||||
};
|
||||
};
|
||||
});
|
||||
|
|
|
@ -12,7 +12,7 @@ var parse = _.wrap(require('url').parse, function (parse, path) {
|
|||
|
||||
function TabCollection() {
|
||||
|
||||
var tabs = null;
|
||||
var tabs = [];
|
||||
var specs = null;
|
||||
var defaults = null;
|
||||
var activeTab = null;
|
||||
|
|
|
@ -39,11 +39,14 @@ define(function (require) {
|
|||
}
|
||||
|
||||
doc[method](vals)
|
||||
.then(function (resp) {
|
||||
queue.forEach(function (q) { q.resolve(resp); });
|
||||
}, function (err) {
|
||||
queue.forEach(function (q) { q.reject(err); });
|
||||
})
|
||||
.then(
|
||||
function (resp) {
|
||||
queue.forEach(function (q) { q.resolve(resp); });
|
||||
},
|
||||
function (err) {
|
||||
queue.forEach(function (q) { q.reject(err); });
|
||||
}
|
||||
)
|
||||
.finally(function () {
|
||||
$rootScope.$broadcast('change:config', updated.concat(deleted));
|
||||
});
|
||||
|
|
|
@ -31,8 +31,9 @@ define(function () {
|
|||
']',
|
||||
description: 'Values that define the format used in situations where timebased' +
|
||||
' data is rendered in order, and formatted timestamps should adapt to the' +
|
||||
' interval between measurements. Keys are ISO 8601 intervals:' +
|
||||
' http://en.wikipedia.org/wiki/ISO_8601#Time_intervals'
|
||||
' interval between measurements. Keys are' +
|
||||
' <a href="http://en.wikipedia.org/wiki/ISO_8601#Time_intervals" target="_blank">' +
|
||||
'ISO8601 intervals.</a>'
|
||||
},
|
||||
'defaultIndex': {
|
||||
value: null,
|
||||
|
@ -71,8 +72,26 @@ define(function () {
|
|||
'visualization:tileMap:maxPrecision': {
|
||||
value: 7,
|
||||
description: 'The maximum geoHash precision displayed on tile maps: 7 is high, 10 is very high, ' +
|
||||
'12 is the max. Explanation of cell dimensions: http://www.elastic.co/guide/en/elasticsearch/reference/current/' +
|
||||
'search-aggregations-bucket-geohashgrid-aggregation.html#_cell_dimensions_at_the_equator',
|
||||
'12 is the max. ' +
|
||||
'<a href="http://www.elastic.co/guide/en/elasticsearch/reference/current/' +
|
||||
'search-aggregations-bucket-geohashgrid-aggregation.html#_cell_dimensions_at_the_equator" target="_blank">' +
|
||||
'Explanation of cell dimensions.</a>',
|
||||
},
|
||||
'visualization:tileMap:WMSdefaults': {
|
||||
value: JSON.stringify({
|
||||
enabled: false,
|
||||
url: 'https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer',
|
||||
options: {
|
||||
version: '1.3.0',
|
||||
layers: '0',
|
||||
format: 'image/png',
|
||||
transparent: true,
|
||||
attribution: 'Maps provided by USGS',
|
||||
styles: '',
|
||||
}
|
||||
}, null, ' '),
|
||||
type: 'json',
|
||||
description: 'Default properties for the WMS map server support in the tile map'
|
||||
},
|
||||
'csv:separator': {
|
||||
value: ',',
|
||||
|
|
|
@ -96,11 +96,7 @@ define(function (require) {
|
|||
|
||||
if (!state.index || !state.type || !state.id) return;
|
||||
return 'DocVersion:' + (
|
||||
[
|
||||
state.index,
|
||||
state.type,
|
||||
state.id
|
||||
]
|
||||
[ state.index, state.type, state.id ]
|
||||
.map(encodeURIComponent)
|
||||
.join('/')
|
||||
);
|
||||
|
|
|
@ -5,14 +5,14 @@ define(function (require) {
|
|||
var es; // share the client amoungst all apps
|
||||
require('ui/modules')
|
||||
.get('kibana', ['elasticsearch', 'kibana/config'])
|
||||
.service('es', function (esFactory, esUrl, $q) {
|
||||
.service('es', function (esFactory, esUrl, $q, esApiVersion) {
|
||||
if (es) return es;
|
||||
|
||||
es = esFactory({
|
||||
host: esUrl,
|
||||
log: 'info',
|
||||
requestTimeout: 0,
|
||||
apiVersion: '1.4',
|
||||
apiVersion: esApiVersion,
|
||||
plugins: [function (Client, config) {
|
||||
|
||||
// esFactory automatically injects the AngularConnector to the config
|
||||
|
|
|
@ -42,5 +42,26 @@ describe('Filter Bar Directive', function () {
|
|||
$rootScope.$apply();
|
||||
});
|
||||
|
||||
it('should return a value for a range/histogram filter from a scripted field', (done) => {
|
||||
let filter = {
|
||||
meta: {
|
||||
index: 'logstash-*',
|
||||
formattedValue: '1,000.00 to 2,000.00',
|
||||
field: 'script number'
|
||||
},
|
||||
script: {
|
||||
params: {
|
||||
gte: 1000,
|
||||
lt: 2000,
|
||||
value: '>=1,000.00 <2,000.00'
|
||||
}
|
||||
}
|
||||
};
|
||||
mapScript(filter).then((result) => {
|
||||
expect(result).to.have.property('value', filter.meta.formattedValue);
|
||||
done();
|
||||
});
|
||||
$rootScope.$apply();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -64,15 +64,7 @@ define(function (require) {
|
|||
includeDefaults: true
|
||||
});
|
||||
})
|
||||
.catch(function (err) {
|
||||
if (err.status >= 400) {
|
||||
// transform specific error type
|
||||
throw new IndexPatternMissingIndices();
|
||||
} else {
|
||||
// rethrow all others
|
||||
throw err;
|
||||
}
|
||||
})
|
||||
.catch(handleMissingIndexPattern)
|
||||
.then(transformMappingIntoFields)
|
||||
.then(function (fields) {
|
||||
fieldCache.set(id, fields);
|
||||
|
@ -108,7 +100,8 @@ define(function (require) {
|
|||
all: all,
|
||||
matches: matches
|
||||
};
|
||||
});
|
||||
})
|
||||
.catch(handleMissingIndexPattern);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -123,6 +116,16 @@ define(function (require) {
|
|||
};
|
||||
}
|
||||
|
||||
function handleMissingIndexPattern(err) {
|
||||
if (err.status >= 400) {
|
||||
// transform specific error type
|
||||
return Promise.reject(new IndexPatternMissingIndices());
|
||||
} else {
|
||||
// rethrow all others
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
return new Mapper();
|
||||
};
|
||||
});
|
||||
|
|
|
@ -35,6 +35,8 @@ describe('TileMap Map Tests', function () {
|
|||
leafletMocks.tileLayer = { on: sinon.stub() };
|
||||
leafletMocks.map = { on: sinon.stub() };
|
||||
leafletStubs.tileLayer = sinon.stub(L, 'tileLayer', _.constant(leafletMocks.tileLayer));
|
||||
leafletStubs.tileLayer.wms = sinon.stub(L.tileLayer, 'wms', _.constant(leafletMocks.tileLayer));
|
||||
|
||||
leafletStubs.map = sinon.stub(L, 'map', _.constant(leafletMocks.map));
|
||||
|
||||
TileMapMap = Private(require('ui/vislib/visualizations/_map'));
|
||||
|
@ -96,6 +98,14 @@ describe('TileMap Map Tests', function () {
|
|||
map._createMap({});
|
||||
expect(mapStubs.destroy.callCount).to.equal(1);
|
||||
});
|
||||
|
||||
it('should create a WMS layer if WMS is enabled', function () {
|
||||
expect(L.tileLayer.wms.called).to.be(false);
|
||||
map = new TileMapMap($mockMapEl, geoJsonData, {attr: {wms: {enabled: true}}});
|
||||
map._createMap({});
|
||||
expect(L.tileLayer.wms.called).to.be(true);
|
||||
L.tileLayer.restore();
|
||||
});
|
||||
});
|
||||
|
||||
describe('attachEvents', function () {
|
||||
|
|
|
@ -67,7 +67,7 @@ define(function (require) {
|
|||
{
|
||||
type: 'warning',
|
||||
msg: 'Positive and negative values are not accurately represented by stacked ' +
|
||||
'area charts. Either changing the chart mode to "overlay" or using a ' +
|
||||
'area charts. Either changing the chart mode to "overlap" or using a ' +
|
||||
'bar chart is recommended.',
|
||||
test: function (vis, data) {
|
||||
if (!data.shouldBeStacked() || data.maxNumberOfSeries() < 2) return;
|
||||
|
|
|
@ -264,7 +264,11 @@ define(function (require) {
|
|||
this._mapZoom = _.get(this._geoJson, 'properties.zoom') || defaultMapZoom;
|
||||
|
||||
// add map tiles layer, using the mapTiles object settings
|
||||
this._tileLayer = L.tileLayer(mapTiles.url, mapTiles.options);
|
||||
if (this._attr.wms && this._attr.wms.enabled) {
|
||||
this._tileLayer = L.tileLayer.wms(this._attr.wms.url, this._attr.wms.options);
|
||||
} else {
|
||||
this._tileLayer = L.tileLayer(mapTiles.url, mapTiles.options);
|
||||
}
|
||||
|
||||
// append tile layers, center and zoom to the map options
|
||||
mapOptions.layers = this._tileLayer;
|
||||
|
|
13
tasks/build/babelOptions.js
Normal file
13
tasks/build/babelOptions.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
module.exports = function (grunt) {
|
||||
|
||||
var srcFile = 'build/kibana/src/optimize/babelOptions.js';
|
||||
var buildFile = 'build/kibana/src/optimize/babelOptions.build.js';
|
||||
var rename = require('fs').renameSync;
|
||||
var unlink = require('fs').unlinkSync;
|
||||
|
||||
grunt.registerTask('_build:babelOptions', function () {
|
||||
unlink(srcFile);
|
||||
rename(buildFile, srcFile);
|
||||
});
|
||||
|
||||
};
|
|
@ -1,13 +0,0 @@
|
|||
module.exports = function (grunt) {
|
||||
|
||||
var srcFile = 'build/kibana/src/cli/index.js';
|
||||
var buildFile = 'build/kibana/src/cli/index.build.js';
|
||||
var rename = require('fs').renameSync;
|
||||
var unlink = require('fs').unlinkSync;
|
||||
|
||||
grunt.registerTask('_build:cliIndex', function () {
|
||||
unlink(srcFile);
|
||||
rename(buildFile, srcFile);
|
||||
});
|
||||
|
||||
};
|
|
@ -9,7 +9,7 @@ module.exports = function (grunt) {
|
|||
'_build:downloadNodeBuilds:start',
|
||||
'copy:devSource',
|
||||
'babel:build',
|
||||
'_build:cliIndex',
|
||||
'_build:babelOptions',
|
||||
'_build:installedPlugins',
|
||||
'_build:packageJson',
|
||||
'_build:readme',
|
||||
|
|
|
@ -2,7 +2,7 @@ module.exports = function (grunt) {
|
|||
let { config } = grunt;
|
||||
let { statSync } = require('fs');
|
||||
let { join } = require('path');
|
||||
let exec = (...args) => require('../utils/exec').silent(...args, { cwd: config.get('root') });
|
||||
let exec = (...args) => require('../utils/exec')(...args, { cwd: config.get('root') });
|
||||
let newFiles = [];
|
||||
let shrinkwrapFile = join(config.get('root'), 'npm-shrinkwrap.json');
|
||||
|
||||
|
@ -13,7 +13,7 @@ module.exports = function (grunt) {
|
|||
if (e.code !== 'ENOENT') throw e;
|
||||
|
||||
if (createIfMissing) {
|
||||
exec('npm', ['shrinkwrap', '--dev']);
|
||||
exec('npm', ['shrinkwrap', '--dev', '--loglevel', 'error']);
|
||||
newFiles.push(shrinkwrapFile);
|
||||
}
|
||||
else grunt.fail.warn('Releases require an npm-shrinkwrap.json file to exist');
|
||||
|
@ -28,7 +28,7 @@ module.exports = function (grunt) {
|
|||
exec('cp', ['npm-shrinkwrap.json', join(config.get('root'), 'build', 'kibana', 'npm-shrinkwrap.build.json')]);
|
||||
|
||||
// create shrinkwrap without dev dependencies and copy to build
|
||||
exec('npm', ['shrinkwrap']);
|
||||
exec('npm', ['shrinkwrap', '--loglevel', 'error']);
|
||||
exec('cp', ['npm-shrinkwrap.json', join(config.get('root'), 'build', 'kibana', 'npm-shrinkwrap.json')]);
|
||||
|
||||
// restore the dev shrinkwrap
|
||||
|
@ -38,4 +38,4 @@ module.exports = function (grunt) {
|
|||
grunt.registerTask('_build:shrinkwrap:cleanup', function () {
|
||||
if (newFiles.length) exec('rm', newFiles.splice(0));
|
||||
});
|
||||
};
|
||||
};
|
||||
|
|
|
@ -3,9 +3,7 @@ let babelOptions = require('requirefrom')('src')('optimize/babelOptions');
|
|||
|
||||
module.exports = {
|
||||
build: {
|
||||
options: defaults({
|
||||
optional: ['runtime']
|
||||
}, babelOptions),
|
||||
options: babelOptions.node,
|
||||
src: [
|
||||
'build/kibana/**/*.js',
|
||||
'!**/public/**',
|
||||
|
|
|
@ -6,7 +6,7 @@ module.exports = function (grunt) {
|
|||
return {
|
||||
options: {
|
||||
directory: directory,
|
||||
branch: 'master',
|
||||
branch: '2.0',
|
||||
fresh: !grunt.option('esvm-no-fresh'),
|
||||
config: {
|
||||
path: {
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = function (grunt) {
|
|||
let version = grunt.config.get('pkg.version');
|
||||
let nodeVersion = grunt.config.get('nodeVersion');
|
||||
let rootPath = grunt.config.get('root');
|
||||
let baseUri = `https://iojs.org/dist/v${nodeVersion}`;
|
||||
let baseUri = `https://nodejs.org/dist/v${nodeVersion}`;
|
||||
|
||||
return [
|
||||
'darwin-x64',
|
||||
|
@ -14,7 +14,7 @@ module.exports = function (grunt) {
|
|||
].map(function (name) {
|
||||
let win = name === 'windows';
|
||||
|
||||
let nodeUrl = win ? `${baseUri}/win-x86/iojs.exe` : `${baseUri}/iojs-v${nodeVersion}-${name}.tar.gz`;
|
||||
let nodeUrl = win ? `${baseUri}/node.exe` : `${baseUri}/node-v${nodeVersion}-${name}.tar.gz`;
|
||||
let nodeDir = resolve(rootPath, `.node_binaries/${nodeVersion}/${name}`);
|
||||
|
||||
let buildName = `kibana-${version}-${name}`;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue