* Add a note about index migrations to the kibana setup docs
* Tewak the migrations asciidocs for clarity
* docs: refine saved object migration details
Breaking down the migration process into sections helps people find
and link to relevant information more easily.
The focus is on ongoing maintenance of Kibana, whereas the initial new
experience in 6.5.0 is treated as a note of clarification.
Error handling should be expanded in the future to include details about
specific known error cases.
* Adding option to always present the certificate when connecting to ES
* Updating docs
* Adding some more tests
* Adding alwaysPresentCertificate option to monitoring
* Limiting the number of spaces
* Adding docs
* Adding forgotten fixture
* Fixing tslint error
* Adjusting docs
* Changing test descriptions from Boom.badRequest to bad request
* Updating error snapshots
### Review notes
This is generally ready for review. We are awaiting https://github.com/elastic/elasticsearch/issues/32777 to improve handling when users do not have any access to Kibana, but this should not hold up the overall review for this PR.
This PR is massive, there's no denying that. Here's what to focus on:
1) `x-pack/plugins/spaces`: This is, well, the Spaces plugin. Everything in here is brand new. The server code is arguably more important, but feel free to review whatever you see fit.
2) `x-pack/plugins/security`: There are large and significant changes here to allow Spaces to be securable. To save a bit of time, you are free to ignore changes in `x-pack/plugins/security/public`: These are the UI changes for the role management screen, which were previously reviewed by both us and the design team.
3) `x-pack/test/saved_object_api_integration` and `x-pack/test/spaces_api_integration`: These are the API test suites which verify functionality for:
a) Both security and spaces enabled
b) Only security enabled
c) Only spaces enabled
What to ignore:
1) As mentioned above, you are free to ignore changes in `x-pack/plugins/security/public`
2) Changes to `kibana/src/server/*`: These changes are part of a [different PR that we're targeting against master](https://github.com/elastic/kibana/pull/23378) for easier review.
## Saved Objects Client Extensions
A bulk of the changes to the saved objects service are in the namespaces PR, but we have a couple of important changes included here.
### Priority Queue for wrappers
We have implemented a priority queue which allows plugins to specify the order in which their SOC wrapper should be applied: `kibana/src/server/saved_objects/service/lib/priority_collection.ts`. We are leveraging this to ensure that both the security SOC wrapper and the spaces SOC wrapper are applied in the correct order (more details below).
### Spaces SOC Wrapper
This wrapper is very simple, and it is only responsible for two things:
1) Prevent users from interacting with any `space` objects (use the Spaces client instead, described below)
2) Provide a `namespace` to the underlying Saved Objects Client, and ensure that no other wrappers/callers have provided a namespace. In order to accomplish this, the Spaces wrapper uses the priority queue to ensure that it is the last wrapper invoked before calling the underlying client.
### Security SOC Wrapper
This wrapper is responsible for performing authorization checks. It uses the priority queue to ensure that it is the first wrapper invoked. To say another way, if the authorization checks fail, then no other wrappers will be called, and the base client will not be called either. This wrapper authorizes users in one of two ways: RBAC or Legacy. More details on this are below.
### Examples:
`GET /s/marketing/api/saved_objects/index-pattern/foo`
**When both Security and Spaces are enabled:**
1) Saved objects API retrieves an instance of the SOC via `savedObjects.getScopedClient()`, and invokes its `get` function
2) The Security wrapper is invoked.
a) Authorization checks are performed to ensure user can access this particular saved object at this space.
3) The Spaces wrapper is invoked.
a) Spaces applies a `namespace` to be used by the underlying client
4) The underlying client/repository are invoked to retrieve the object from ES.
**When only Spaces are enabled:**
1) Saved objects API retrieves an instance of the SOC via `savedObjects.getScopedClient()`, and invokes its `get` function
2) The Spaces wrapper is invoked.
a) Spaces applies a `namespace` to be used by the underlying client
3) The underlying client/repository are invoked to retrieve the object from ES.
**When only Security is enabled:**
(assume `/s/marketing` is no longer part of the request)
1) Saved objects API retrieves an instance of the SOC via `savedObjects.getScopedClient()`, and invokes its `get` function
2) The Security wrapper is invoked.
a) Authorization checks are performed to ensure user can access this particular saved object globally.
3) The underlying client/repository are invoked to retrieve the object from ES.
## Authorization
Authorization changes for this project are centered around Saved Objects, and builds on the work introduced in RBAC Phase 1.
### Saved objects client
#### Security without spaces
When security is enabled, but spaces is disabled, then the authorization model behaves the same way as before: If the user is taking advantage of Kibana Privileges, then we check their privileges "globally" before proceeding. A "global" privilege check specifies `resources: ['*']` when calling the [ES _has_privileges api.](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html). Legacy users (non-rbac) will continue to use the underlying index privileges for authorization.
#### Security with spaces
When both plugins are enabled, then the authorization model becomes more fine-tuned. Rather than checking privileges globally, the privileges are checked against a specific resource that matches the user's active space. In order to accomplish this, the Security plugin needs to know if Spaces is enabled, and if so, it needs to ask Spaces for the user's active space. The subsequent call to the `ES _has_privileges api` would use `resources: ['space:marketing']` to verify that the user is authorized at the `marketing` space. Legacy users (non-rbac) will continue to use the underlying index privileges for authorization. **NOTE** The legacy behavior implies that those users will have access to all spaces. The read/write restrictions are still enforced, but there is no way to restrict access to a specific space for legacy auth users.
#### Spaces without security
No authorization performed. Everyone can access everything.
### Spaces client
Spaces, when enabled, prevents saved objects of type `space` from being CRUD'd via the Saved Objects Client. Instead, the only "approved" way to work with these objects is through the new Spaces client (`kibana/x-pack/plugins/spaces/lib/spaces_client.ts`).
When security is enabled, the Spaces client performs its own set of authorization checks before allowing the request to proceed. The Spaces client knows which authorization checks need to happen for a particular request, but it doesn't know _how_ to check privileges. To accomplish this, the spaces client will delegate the check security's authorization service.
#### FAQ: Why oh why can't you used the Saved Objects Client instead!?
That's a great question! We did this primarily to simplify the authorization model (at least for our initial release). Accessing regular saved objects follows a predictible authorization pattern (described above). Spaces themselves inform the authorization model, and this interplay would have greatly increased the complexity. We are brainstorming ideas to obselete the Spaces client in favor of using the Saved Objects Client everywhere, but that's certainly out of scope for this release.
## Test Coverage
### Saved Objects API
A bulk of the changes to enable spaces are centered around saved objects, so we have spent a majority of our time automating tests against the saved objects api.
**`x-pack/test/saved_object_api_integration/`** contains the test suites for the saved objects api. There is a `common/suites` subfolder which contains a bulk of the test logic. The suites defined here are used in the following test configurations:
1) Spaces only: `./spaces_only`
2) Security and spaces: `./security_and_spaces`
3) Security only: `./security_only`
Each of these test configurations will start up ES/Kibana with the appropriate license and plugin set. Each set runs through the entire test suite described in `common/suites`. Each test with in each suite is run multiple times with different inputs, to test the various permutations of authentication, authorization type (legacy vs RBAC), space-level privileges, and the user's active space.
### Spaces API
Spaces provides an experimental public API.
**`x-pack/test/spaces_api_integration`** contains the test suites for the Spaces API. Similar to the Saved Objects API tests described above, there is a `common/suites` folder which contains a bulk of the test logic. The suites defined here are used in the following test configurations:
1) Spaces only: `./spaces_only`
2) Security and spaces: `./security_and_spaces`
### Role Management UI
We did not provide any new functional UI tests for role management, but the existing suite was updated to accomidate the screen rewrite.
We do have a decent suite of jest unit tests for the various components that make up the new role management screen. They're nested within `kibana/x-pack/plugins/security/public/views/management/edit_role`
### Spaces Management UI
We did not provide any new functional UI tests for spaces management, but the components that make up the screens are well-tested, and can be found within `kibana/x-pack/plugins/spaces/public/views/management/edit_space`
### Spaces Functional UI Tests
There are a couple of UI tests that verify _basic_ functionality. They assert that a user can login, select a space, and then choose a different space once inside: `kibana/x-pack/test/functional/apps/spaces`
## Reference
Notable child PRs are listed below for easier digesting. Note that some of these PRs are built on other PRs, so the deltas in the links below may be outdated. Cross reference with this PR when in doubt.
### UI
- Reactify Role Management Screen: https://github.com/elastic/kibana/pull/19035
- Space Aware Privileges UI: https://github.com/elastic/kibana/pull/21049
- Space Selector (in Kibana Nav): https://github.com/elastic/kibana/pull/19497
- Recently viewed Widget: https://github.com/elastic/kibana/pull/22492
- Support Space rename/delete: https://github.com/elastic/kibana/pull/22586
### Saved Objects Client
- ~~Space Aware Saved Objects: https://github.com/elastic/kibana/pull/18862~~
- ~~Add Space ID to document id: https://github.com/elastic/kibana/pull/21372~~
- Saved object namespaces (supercedes #18862 and #21372): https://github.com/elastic/kibana/pull/22357
- Securing saved objects: https://github.com/elastic/kibana/pull/21995
- Dedicated Spaces client (w/ security): https://github.com/elastic/kibana/pull/21995
### Other
- Public Spaces API (experimental): https://github.com/elastic/kibana/pull/22501
- Telemetry: https://github.com/elastic/kibana/pull/20581
- Reporting: https://github.com/elastic/kibana/pull/21457
- Spencer's original Spaces work: https://github.com/elastic/kibana/pull/18664
- Expose `spaceId` to "Add Data" tutorials: https://github.com/elastic/kibana/pull/22760Closes#18948
"Release Note: Create spaces within Kibana to organize dashboards, visualizations, and other saved objects. Secure access to each space when X-Pack Security is enabled"
Allows Kibana users to configure the max_concurrent_shard_requests param used by Kibana when sending _msearch requests. Exposes the config as an advanced setting. By default we won't send the param at all, relying on the ES default instead.
* [config] logging.useUTC -> logging.timezone
* docs
* [env] exit if starting as root
* fix import path
* add link and timezone example
* Revert "[env] exit if starting as root"
This reverts commit f6e9090833a5180fe360a9ff54543c37c0ca3a58.
GitHub's asciidoc parser handles `*` characters fine but markdown thinks its italicizing unless you escape the first asterisk. Subsequent asterisks on the same line can stay unescaped and should work fine.
* Add clarification for server.ssl.supportedProtocols setting
Added clarification that the setting has to be an array. With the current wording you can assume that you can just add it as a simple string.
* Update settings.asciidoc
* Update settings.asciidoc
extra dot
* [DOCS] New tutorial for exploring Kibana with sample data set
* [DOCS] Incorporated review comments into sample tutorial
* [DOCS] GS: Edits for consistency
* Beginning to work on the role management APIs. Added docs for GET
* Adding PUT docs
* Adding PUT details
* Adding delete docs
* Fixing linking
* Adding Kibana privileges section
* Fixing dashboard only mode docs
* Fixing a few more references to managing roles
* Beginning to work on authorization docs, might be moving some to
stack-docs
* Collapsing authorization description in the kibana privileges page
* Adding audit logging section
* Revising the language on the Kibana role management section
* Splitting back out the auth/privileges and adding legacy fallback
details
* Revising language around impact of disabling security
* Changing Kibana to {kib} and Elasticsearch to {es}
* Beginning to work on developer centric docs
* Fixing some formatting, adding some diagrams
* Adding note about the role management APIs
* Adding overview, fixing small syntax issues
* Fixing chunk name for transitioning to application privileges
* Adjusting tone for the authorization introduction
* Changing the tone and structure of the RBAC docs
* Deleting blog stuff after refactoring
* Addressing first round of peer review comments
* Fixing endpoints links
* Peer review suggested edits
* Addressing other PR feedback
This is a breaking change that removes the
`xpack.monitoring.node_resolver` setting. This setting was deprecated in
5.6, and in 6.1 the setting was limited to `uuid` explicitly. Beginning in
7.0, after this is merged, the setting will no longer exist.
* add _bulk_create rest endpoint
* document bulk_create api
* provide 409 status code when conflicts exist
* add overwrite and version to documenation
* clean up assert statements and 2 places where bulkCreate is getting used with new output
* properly stub bulkCreate return
* remove version of documenation example
The float tags are required here to keep the subheadings on the same
page in the website. And, since link tags are global, we need to give them unique
names to avoid cross-linking errors.
These changes need to be backported to all 6.X releases.
Adding new documentation about the APM UI and definitions of terminology and more.
* Images added to docs
* Adding Using APM UI page contents
* Including new APM UI page
* Updated Watcher copy
* Copy feedback from @gchaps
* Add Inspector feature
* So long, and thanks for all the fish, spy panel
* Fix several functional tests
* Fix unit tests
* Fix spy panel button tests
* Replace old spy panel documentation
* Disable test temporarily until we have dashboard triggers
* Enter edit mode for dark theme test
* Fix some more functional tests
* Fix more functional tests
* More test fixing
* Fix more functional tests
* Allow opening the inspector via loader handler
* Refactor InspectorViewChooser, remove unused CSS
* Remove dead code
* Fix data download button style
* Remove redundant code
* Load inspectorViews for dashboard_viewer
* Extract inspector views to custom core_plugin
* Switch API to TypeScript 🎉
* Design changes
* Remove icons from views
* Design changes
* Improve typings of API
* Add typing to all adapters
* Show loading spinner in request selector
* Rewrite InspectorView to TypeScript
* Fix help text for data view
* Remove deprecated React lifecycle methods
* Embed inspector into dashboard panel actions
* Remove temporary inspector trigger
* Remove old CSS
* Fix dashboard trigger for new panel action
* Add tests for InspectorPanel and DataAdapter
* Produce a hierarchical table if the vis is hierarchical
* Remove allowJs option again
* Add missing Apache license headers
* Close inspector on dashboard when navigating away
* Use proper title for dashboard panels
* Fix functional tests
* Skip broken test for now
* Flush view chooser button
* Add request adapter tests
* Skip more tests, broken due to typescript
* Add Request Time description
* Add description for courier request
* Fix tests
* Replace icon by new (not yet released) icon
* Finalize design of inspector
* Remove discover test, that relied on spy panels
* Change API to be properly mockable in tests
* Add aria-live region for request status
* Replace old method in functional tests
* Replace abitrary magic number
* Use object destructuring in vis
* Fix issue with crashing requests view
* Add request time tooltip
* Get request body of correct search source
* Make filter buttons properly keyboard accessible
* Follow Dave's design suggestions
* Remove redundant request from name
* Remove unneeded comments
* WIP raw-formatted values
* Fix filtering issue
* Fix tests and more license headers
* Add data view tests
* Remove search from table
* Fix typos
* Implement review suggestion
* Remove artificial delays for testing
* Fix new panel action structure
* Minor design adjustments
* Fix failing functional test
* Update failing snapshot test
* Implement final wording
* Apply new EUI styling
* Fix closing inspector in tests
* Fix sorting of table
* Align punctuation between tooltips
* Starting to document Logstash config management APIS
* Removing copy pasta
* Adding delete pipeline API doc
* Mention updates in Create Pipeline API doc
* Capitalization fix
* Adding Retrieve Pipeline API doc
* Adding List Pipelines API doc
* Fixing typos
* Fixing DELETE pipeline API response code
* Add description field to GET pipeline response
* Update PUT pipeline API response to match implementation
* Fixing and annotating GET pipelines response
* Add AIP doc reference to index
* Adding xpack role
* Adding floats
* Missed list item
* Fixing rebase auto-merge
* Adding intro section to Logstash Configuration Management API page
* Bolding "experimental"
* Fixing typo
* Update config schema to allow map.tilemap & map.regionmap
* Inject map.regionmap & map.tilemap. Fall back to top-level config declarations if needed
* Warn user on use of legacy map config vals
* Don't create default map objects for deprecated entries. Add notes indicating top-level objects are deprecated
* Update map references in docs
* Shuffle map configurations in docs to be grouped together
* [DOCS|Monitoring] Added text about first time opening Kibana Monitoring
* [DOCS | Monitoring] Incorporated review comments on startup experience doc
* [DOCS] Fixes typo
* Adds documentation for Saved Objects API
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* [DOCS] Moved Rest APIs in navigation
* docs: revise rest api intro
* docs: revise create object api details
* docs: revise saved object api intro
* docs: revise delete saved object api details
* docs: remove newline character from api response
* docs: get saved object api details
* docs: update saved object api details
* docs: fix title attribute in saved object api examples
* docs: bulk-get saved object api details
* docs: find saved object api details
* docs: add index-pattern to valid types in api
* docs: clarify sending multiple values in api
* docs: note that savedObjects.find is not safe for export
* add logQueries to docs
* remove extra space
* logQuerie => logQueries
* better working
* use code font for logging.verbose and true, remove x-pack in front of monitoring
* [DOCS|Dashboard] Updated images and text to match UI
* [DOCS | Dashboard] Incorporated review comments
* [DOCS | DASHBOARD] Incorporated more review comments.
* [typescript] add typescript support for the server and browser
* [ts-jest] upgrade to latest version
* [jest] support test.tsx files
* [jest/ts] modify `ts-jest.tsConfigFile` config based on filePath
* [types] use correct major version of minimatch types
* [jest] add ts support to x-pack jest config
* [ts/projects] fix tsconfig.json not found error message
* [optimizer/ts] use lowercase jsx option
* [tsconfig] remove ui/* alias
* [plguin-helpers] remove mention of `buildSourcePatterns`
* [plugin-helpers] expect typescript to be a devDep
* [dev/build] place transpile tasks next to each other
* [ts/x-pack] add common and server directories to ts project
* [dev/ts/project] use a limited set of globs to find tsconfig files
* [DOCS: Getting Started] Edited text and updated screenshots]
* [DOCS|Getting Started] Edited for consistency in addressing the user
* [DOCS|Getting Started] Incorporated review comments
* [DOCS|GS] Style changes for consistency
* enhance index pattern delete documenation
* add line about breaking saved objects that still reference index pattern
* indices spelling
* better wording from gchaps
* Update tutorial-define-index.asciidoc
Added a note on how to check for current indices in Elasticsearch, to make it clearer for people that haven't used the previous chapters.
* Update tutorial-define-index.asciidoc
* Support 1 Kibana and 1 Elasticsearch URL as input params
* Revert a previous change to test char substitution
* Allow setting TEST_KIBANA_URL and TEST_ES_URL for Cloud testing
* cleanup comment
* Update docs
* Refactor after PR review
* Changes from review
* fix default Kibana port to 5620
* Change es_test_config.js similar to kibana_test_server_url_parts.js
It is not very useful to have:
* shardTimeout disabled if requestTimeout is enabled (means infinite es overruns)
* shardTimeout > requestTimeout if both enabled (means finite es overruns)
* shardTimeout < requestTimeout if both enabled (means partial results from es?)
The only option that really makes sense is to have shardTimeout === requestTimeout, so that's what I've done here.
Lukas and I chatted over Slack and we both agreed it didn't really make sense to apply query:queryString:options to query_string filters. If someone is using the advanced query DSL editor to create a query_string filter they probably want full control over it.
This is a breaking change so it will only go in 7.0. In 6.x users should use one of the workarounds.
Makes our language updates more visible to users and removes mentions of Kuery as a separate language. Users still get the old lucene experience by default, but have the option to opt-in to "experimental query features" directly in the query bar. Goal is to get more feedback by making these new features more prominent and less of a jump from lucene.
* First stab at refactoring typeahead
* Don't double submit on enter
* Add item templating
* Introduce simple kuery language
* Rename to kql and add modules
* Update KQL syntax
* Automatically insert matching pairs
* Don't match quotes after alphanumeric chars
* Get field and value suggestions
* Remove accidental changes
* Remove unnecessary test
* Don't submit on enter
* Fix typeahead
* Suggest matching recent searches
* Suggest operators
* Suggest conjunctions
* Use template, separate suggestions into separate modules
* Whoops, add this module back
* Add clarifying comment
* Fix history log key
* Don't update suggestions on every key press
* Fix key handling
* Update terminology to be clearer
* Fix typo
* Simplify building of nodes
* Don't always hide on submit
* Check items exists
* Add icon directive which wraps EuiIcon.
* kql design start
* remove comment bits
* Simplify select next/prev and reset selected on hide/backspace
* Add test
* Put persistedLog on scope so it can be tested
* Fix typos
* Build up AST for sublist by returning functions that take a field name
* Remove single quoted strings and add double quote to special characters
* Build nodes with arg nodes instead of args themselves
* Add support for exact phrase search for quoted values
* Update typeahead items when language changes
* Finish that work I didn't do in the last commit
* This commit makes Bargs very happy cuz it does a lot
* Add wildcard field support to range query
* Remove range support for wildcard values
* Remove KQL as a separate language
Updates kuery to use KQL's grammar. This will lead to a smoother
transition for both us and Kuery users. We mainly added KQL as a
separate language so that we could notify Kuery users that the syntax
had changed. I realized we could do the same by trying to parse their
query strings with the old grammar if the new grammar fails, and if the
old grammar parses successfully we can display an error message with a
link to the docs describing the syntax changes. Since Kuery now uses the
more simple KQL syntax, I've also re-enabled the filter bar when Kuery
is selected.
* Fix typeahead behavior
* Update conjunctions
* Use scope apply
* Suggest conjunctions after ranges
* Support strings in wildcard node constructor and add tests for wildcard node
* test updates
* Removing unused serializeStyle and toKueryExpression, updating tests
* Fix functional test
* Fix typo
* Show fields that match in any part of the name
* Alter order of operators
* Preserve focus after selecting by click
* Ports tests for `fromKueryExpression` to `fromKqlExpression`
* More KQL syntax tests
* Suggest conjunctions after ranges
* Fix suggestions inside parens
* fromLiteralExpression tests
* remove serializeStyle arguments which no longer exist in the function definition
* tests for getFields
* Case insensitive search for field names
* update tests for is.js
* add wildcard fieldname test for range.js
* Fix removed div
* Fix line spacing for autocomplete suggestions
* Fix conjunction suggestions with escaped preceding literals
* Escape special characters in fields and values
* Don't suggest the value that's already selected
* Update icons
* Sort prefix first
* Simplify cursor detection and suggest booleans
* Use quotes for suggested values
* get rid of references to KQL
* Don't show errors from parsing
* That didn't even exist
* Use config to determine if values are suggested
* Update suggestions on home/end
* remove hack
* Update reference to kql
* Suggestions for quoted values
* Clean up grammar
* Better support for cursor inside spaces
* Create grunt task to generate parsers from peg files
* Simplify wildcard handling
* Don't filter out the exact fields/values
* Update parsing modules
* Fix peg task
* Make operator syntax more visible
* Update OR verbiage
* Simplify and improve match pairs
* Revert "Simplify wildcard handling"
This reverts commit 915861beab.
* Support escaped backslashes inside quoted strings
* Support escaped keywords
* Remove lodash dependency cuz w33ble
* Escape user input and fix conjunction description
* Clear suggestions after submitting
* Fix insertion of suggestion to account for selection
* Remove unnecessary?
* Remove extraneous file
* Better name for method
* Move functions out of event handler
* Don't wrap result in promise
* Don't show kuery suggestions for lucene
* some cleanup and polish for kql autocomplete
* Omit description completely for values
* Don't suggest and/or for quoted strings that end in spaces
* Submit recent search suggestions on select
* Scroll selected suggestion into view
* Better handling of key events and hiding typeahead
* Update suggestions to work in other apps with multiple index patterns
* Only update suggestions if not submitting
* Hide suggestions on focus
* Simplify wildcard (again)
* Fix console error
* Remove references to kql
* Fix match pairs so that suggestions occur with cursor in correct place
* Memoize value suggestions
* Debounce model updates
* Add tests for suggestion providers
* Add setting and docs
* Add custom error, helper for detecting leading wildcards, and check for
leading wildcards in the Value rule of the grammar.
* Better handling of suggestion clicks
* Dedup suggestions
* Sort keywords first
* Fix value suggestions memoizing
* Check if query exists
* Reduce size of dialog and fix ranges
* Create grunt task to generate parsers from peg files
* Lazy load typeahead items
* Fix wildcard tests
* Fix value suggestion tests
* Fix typeahead tests
* Fix value suggestion memoize resolver
* Leave comment
* Add a ttl for the value suggestion resolver
* Move grunt config to config/
* Bargs can suck it
* Fix more tests that bargs broke (and one I did too)
* Fix tests
* WIP - add shakespeare data for getting started guide
* Refactor of getLineChartData, getBarChartData, getAreaChartData
* Added changing extents and test
* Fix opening axis options
* Change precision from 8 to 7
* lower precision to 6
* Fix index pattern creation
* update from review, remove comments, add others
This PR evolves Kuery into a simplified, more lucene-like language. In a follow up PR we plan on getting rid of the language switcher dropdown and instead add a checkbox that will allow users to opt-in to this syntax, which will feel less like a separate language and more like a set of enhancements to the existing lucene query syntax.
This PR also updates the simple grammar to solve the following:
* Wildcards in field names
* "is one of" shorthand (e.g. foo:(bar OR baz OR qux))
* Don't split on whitespace (require explicit AND/ORs, case insensitive)
* "exists" query (e.g. foo:*)
* Improved range query shorthands (e.g. foo <= 1)
* Wildcard queries
Since this new syntax is simpler and does not support every filter type like old Kuery did, this PR also brings back the filter bar when kuery is selected in the language picker.
See the documentation updates in this PR if you need an overview of the new syntax (and let us know if the documentation is lacking).
* [server/rewriteBasePath] add option to enable basePath rewriting
* [server/rewriteBasePath/docs] end sentences with periods
* [server/rewriteBasePath] simplify Joi schema a smidge
* [server/rewriteBasePath] rename test file to match source
* [server/rewriteBasePath] initialize server in before/after hooks
* [server/rewriteBasePath] rephrase deprecation warning
* [server/config/schema] verify that non-strings are not accepted for basePath
* [server/config/schema] toss a trailing comma in there
* [kbn-plugin-generator] add plugin generator to the repo
* [plugin-generator] use snake_case plugin name for directory name
* [plugin-generator] fix typo
* [plugin-generator] remove translation support until we resume i18n efforts
* [yarn] update lockfile
* [mocha] remove plugin-generator selector from mocha tests
* [plugin-generator] update generated readme to recommend yarn
* [plugin-generator] add readme to generator pacakge
* [plugin-generator] link from plugin-resource docs
* [plugin-generator] mention very important `kbn bootstrap` script
* [plugin-generator] rework some parts of the README
* [plugin-generator] log actual directory name with system separators
* [plugin-generator] include bootstrap/yarn preinstall check script
* Remove tribe node support
Tribe node is being removed from Elasticsearch since it has been
superseded by Cross-Cluster-Search.
* console: remove unnecessary isEnabled
The default behavior for the plugin is to be disabled when its `enabled`
configuration is set to false, so this custom isEnabled function is not
necessary any longer.
* tutorial docs
* fixes from ycombinator review
* ElasticSearch -> Elasticsearch
* move out of style guide and into README under server/tutorials
* move to asciidocs
* add new line so list is rendered correctly
* changes from gchaps review
* [docs] uniform colons
* [docs] Add more text about elasticsearch.ssl settings
* [docs] Add more text about elasticsearch.ssl.verificationMode setting
* [docs] spelling error
* [docs] clarify wording
* switch to yarn
* cleanup misc references to npm
* [yarn] loosen dependency ranges so yarn will merge more deps
* fix linting error now that moment uses ESM
* [licenses] font-awesome changed the format of its license id
* Use local yarn
* Misc fixes
* eslintignore built yarn file
* Remove mkdir which doesn't do what it should do
* Check build without upgrading lots of versions
* Fix license check
* too many moments
* Better description
* Review fixes
* Lock to angular@1.6.5
* More specific version locks
* Revert "More specific version locks"
This reverts commit 11ef81102e.
* Revert "Lock to angular@1.6.5"
This reverts commit 3ade68c14c.
* rm yarn.lock; yarn
* Forcing a specific version of React, Angular, Moment
* Using vendored version of yarn in ci
* Use --frozen-lockfile
* fixes
* Added windows powershell commands to the tutorial
* Change to describe using Kibana Console
The instructions looked like Kibana Console format, not curl commands
* Region map settings clarifications (#14893)
Improve documentation.
This also includes some additions to clarify the new includeElasticMapsService setting.
It also fully qualify all names
* Simplify promise setup logic
* Import template from own file
* Use angular.element instead of jquery
* Add documentation for loader methods
* Add params.append
* Remove params.editorMode
* Clarify when returned promise resolves
* Add element to handler
* Allow setting CSS class via loader
* Use render-counter on visualize
* Use Angular run method to get access to Private service
* Allow adding data-attributes to the vis element
* Refactor loader to return an EmbeddedVisualizeHandler instance
* Use this.destroy for previous API
* Remove fallback then method, due to bugs
* Reject promise from withId when id not found
* Add tests
* Change developer documentation
* Revert "Use Angular run method to get access to Private service"
This reverts commit 160e47d7709484c0478415436b3c2e8a8fc8aed3.
* Rename parameter for more clarity
* Add more documentation about appState
* Fix broken test utils
* Use chrome to get access to Angular
* Move loader to its own folder
* Use a method instead of getter for element
* Add listeners for renderComplete events
* Use typedef to document params
* Fix documentation
* Use separate startup scripts for development and production
* build kibana directly
* [build] Use downloaded node when pre-optimizing
* clearer variable name
* Add breaking changes docs
* apply patch
add styling
remove cruft
split up concept of experimental and labs
adjust wording
* improve wording
* improve wording & punctuation. remove concept of feedback-url
* remove duplicate labeling between labs/experimental; resolve some typos
* merging isExperimental and isLabs flags to a stage setting
* adding the option to override feedback message back (and improving it)
* updating the docs
* change text labs to lab
* visualize:enableLabsVisualizations to visualize:enableLabs
* fixing github link
* enable turning on/off of warnings
* add tooltip
* add server setting so users can opt out of connecting to the EMS service
* replace WMS options with custom directive, so we can reuse it in region maps
* add wms settings form to Region Map
* no need to recreate map after leaflet upgrade
* add WMS map to region map
* linting issues
* fix rebase
* improve wording
* add global config
* fix typo
* Adding method to expose the dashboard app container size to reporting
* Adding a data-shared-items-container attribute to the viewport
* Making visualize tell us how large they are
* Removing the controller methods that returned the item size
* Moving the sharing attributes to be on the actual elements, so we can
figure out their dimensions
* Passing the savedObj to the Visualize elements adding the data- attrs
* Adding the title/description to the Dashboard
* Dispatching the initial title/description
* Reverting some accidental whitespace changes
* Fixing metadata selectors
* Adding newline at end of file...
* Putting the $emit('renderComplete') back
* Passing only the savedObj to the Visualize Editor Controller
* Setting the description on the $scope.vis so we don't have to pass the
SavedObj
* Reverting more TSVB title/description code
* Removing savedObj from scope
* Putting $scope.vis back to vis
Introduces bin/kibana-keystore providing create, list, add, and remove actions.
Settings stored within the keystore will be loaded at runtime.
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
Update Docker docs for 6.0.0 and image flavours
* Use Compose v2 in Docker examples
* Use US spelling in Docker docs
* Link to www.docker.elastic.co in docs
* [timelion] remove last remaining amd modules
* [eslint-config-kibana] remove env.amd
* [webpack] use absolute loader names
* [webpack] remove absolute node_modules/ imports
* [webpack] upgrade to webpack 3
* [uiFramework] make webpack build compatible with v3
* [eslint-import-resolver] use https://github.com/elastic/eslint-import-resolver-kibana/pull/21
* [baseOptimizer] don't break when pkg has no dependencies
* [optimize] remove unnecessary json-loader
* [optimize] remove local references to webpack vars
* [eslint] upgrade to eslint-import-resolver-kibana 0.9.0
* [baseOptimizer] comment tweaks
* [baseOptimizer] remove loader pinning
In webpack 1 the loaders defined here were resolved relative to the file they were going to load, which meant that plugins in other projects could accidentally overwrite the loaders Kibana was trying to use, which is why the aliases were used to enforce proper resolution.
In webpack 2 loaders are now resolved relative to the webpackConfig.context, which is set to the root of the Kibana repo. See https://webpack.js.org/configuration/module/#useentry
* [webpack] rely on kibana webpack shims before checking node_modules
* Check sort:options for Discover default sort order
I went back and forth on a lot of different solutions for this.
Initially I thought it would make sense to just allow users to set a
default saved search in Discover. There were some problems with that
approach though. It would change the default workflow in Discover.
Instead of starting with an unsaved search, users would be editing a
saved search by default. I could see this leading to a lot of
unintentional changes to the default. The settings from the default
saved search also wouldn't carry over to new searches, which I think
would be desirable most of the time.
I also considered adding a new advanced setting for specifying a default
sort field/direction. This kind of setting would make more sense at the
index pattern level though. One field may not be valid across all index
patterns.
So I ended up going with the simplest solution. It solves the issue
identified by the author of the linked issue and nothing more. If a sort
order is specified in the existing sort:options advanced setting, we'll
use that direction when sorting on the index pattern's timestamp field
by default.
Fixes https://github.com/elastic/kibana/issues/5164
* Create a new advanced setting instead of re-using sort:options
* Just pass a default order
* Re-enable filter editor suggestions
* Use search instead of include
* Escape query
* Show spinner
* Use include rather than search
* Add additional regex and explanation for parameters
* Add suggestions API test
* Make sure test actually runs
* Use send instead of query
* Fix suggestions API test
* upgrade leaflet modules to 1.x latest
* fix css for leaflet controls
* update draw options so it is easier to see polygon when drawing
* fix chrome touch issues with closing polygon in leaflet draw
* use canvas renderer
* use leaflet-responsive-popup to avoid tooltip cutoff
* remove radius configuration from leaflet heatmap
* make blur a factor of radius. Set maxZoom to map zoom since new values are calculated per precision
* use _.get to avoid error, cannot read property of undefined
* add cluster size slider
* experiments with image differences
* onload not onLoad
* use canvas dimensions
* compare map canvas to stored PNG of map canvas
* remove pixelmatch from project dependecies
* fix broken test - rounding error
* add expected image tests for geohash layers shaded circles and geohash grids
* bump z-index of vis-spy
* update functional test expected data
* update to leaflet 1.2.0
* revert to leaflet 1.0.3 and update expected data set for map functional tests
* test geohash_layer heatmap in unit test
* update region_map functional test since it can not longer pluck map vectors from DOM
* update documentation
* add markdown functional test
* update markdown vis to use markdown-it
* migrate markdown angular filter to markdown-it
* place other uses of marked and remove dependency
* update breaking changes documenation and set linkify to true
Fixes#13563
Brings additional attention to the fact that Kuery uses implicit ANDs whereas Lucene query syntax uses implicit ORs, which could confuse users if they're not aware of the difference.
* Change use of all_fields in highlight_query to default_field
* Remove highlight query and option
* Fix tests
* Remove unused setting
* Remove lingering references to all_fields
* Configurable custom response headers for server
The server.customResponseHeaders configuration allows users to configure
custom headers to send on all responses to the client from anywhere in
the Kibana server.
This can be useful for setting headers like x-frame-options when you
don't want people embedding even Kibana dashboards in an iframe.
* Consistent header overriding and explicit unknown
The documentation for setting Kibana options with environment variables under
Docker was brittle and difficult to maintain. Rather than list every option,
this change describes the method by which they are defined, thus avoiding the
need to edit the docs in multiple places when a new option is introduced.
This adds the attribution strings of vector data files to the map. It also enables the map to allow for individual attribution strings from each individual layer, so attribution gets updated correctly when adding/removing layers.
- httpolyglot is removed, we no longer automatically redirect from http to https
- server.ssl.redirectHttpFromPort option added to allow for http -> https redirect from one port to another
- We no longer start the dev server with tls by default, it can be turned on with the --ssl flag, npm start -- --ssl, or ./bin/kibana --dev --ssl
- There will currently be error log messages if you connect over the wrong protocol, we have #11209 for downgrading these
* [indexPatterns] remove support for time patterns
* Revert "[indexPatterns] remove support for time patterns"
This reverts commit 4263e37c66.
* [indexPatterns] remove ability to create time-based patterns
* [indexPattern/routes] fix export of routes for stub
* [Storage] export Storage class for testing
* [indexPatterns/unsupportedTimePatterns] add tests
* [indexPatterns] focus warning check module
* [indexPatterns/tests] fix method name
* add metion of this change to migration docs
* disable warnings by default until we have a migration tool
* prevent the warning from disapearing
* fix grammar
* enabled warnings in the tests
Using fields with docvalues (like `_doc`) for tie-breaking yields
significantly better performance than using `_uid`, which lacks
docvalues at the moment. The downside is that sorting by `_doc` by
default is not stable under all conditions, but better than no
tie-breaking at all.
The new setting `context:tieBreakingFields` enables the user to
customize the list of fields Kibana attempts to use for tie-breaking.
The first field from that list, that is sortable in the current index
pattern, will be used. It defaults to `_doc`, which should change to
`_seq_no` from version 6.0 on.
In addition to just showing a notification, errors that occur while
loading documents from the database will be stored as part of the
`loadingStatus` along with a reason code (if known). This is used to
display more nuanced and helpful error messages to the user.
The first such error message indicates a missing or invalid tiebreaker
field required for sorting the context.
- Users can now create choropleth maps. This requires configuring an inner join between the results of a term-aggregation and a reference vector layer. This vector layer needs to be in the GeoJson format. By default, Kibana uses vector layers serverd by a data service hosted by Elastic. Users can also bring in their own layers by adding configuration entries in the kibana.yml. These need to point to a CORS-enabled data service that accepts requests from the Kibana application.
- For clarity, the tilemap is renamed to Coordinate Map.
- A new manifest is published by Elastic. this includes metadata for the available tilemap services, as well as metadata for the available vector data layers.
Prior to version 4.2.0, kibana.yml configurations used underscore as a
separator. In 4.2.0, this changed to dot instead, though the old
configuration names continued to work. In 5.0 we started logging
deprecation notices whenever the underscore-separated configurations
were encountered. Now we remove support for them entirely.
Using the --dev flag is the only support way to change the internal
Kibana environment to something else. Allowing NODE_ENV to be set at all
can have unexpected results with our dependencies, so we now always set
it to production.
The discover:aggs:terms:size config value was never added to the default values, so when the trash-button is clicked it removes the config completely and causes discover to send an empty size param to visualize.
* Changing shakespeare bulk upload command for 6.0
* file path and mapping change
changing the file path for shakespeare and the mapping type from default to doc
* removing underscore for doc and changing file name
* removing extra spaces in the map shakespeare command
* removing spaces before the colon
* removing extra spaces
* Fixes#11231 - Adds check for max_bucket size for Time Series Visual Builder
* Added Math.floor() to bucket calculation; changed error message; changed option description
* Adding limitations section to Kibana docs
* Language fixes
* Remove workaround
* Wording change
* Also mention `copy_to` along with `include_in_parent`
* Adding note about searching on nested objects
* [functional_test_runner] replace functional testing tools with custom/pluggable solution
* [functional_test_runner] Convert unit tests to commonjs format
* [functional_test_runner] Fix dashboard test in wrong mode
* [functional_test_runner] Add dashboardLandingPage test subject
* [functional_test_runner] Get Visualize page object
* [functional_test_runner] Fix outdated references
* [functional_test_runner] Fix more outdated refs
* [functional_test_runner] Remove duplicate tests
* [functional_test_runner] Improve test readability
* [functional_test_runner] 😞 So many duplicate methods
* [functional_test_runner] Move mgmt `before` outside toplevel describe
* [functional_test_runner] Settings page obj missing methods
* [functional_test_runner] Add improvements from @gammon
* [functional_test_runner] Fix return statements in async funcs
* [functional_test_runner] Move before() to correct scope
* [functional_test_runner] Add after() hooks to remove index patterns
* [functional_test_runner] Attempt to fix vertical bar chart tests
* [functional_test_runner] Clean up
* [functional_test_runner] Reinstate unit tests
* [functional_test_runner] Set default loglevel back to info
* [functional_test_runner] Replace `context`s with `describe`s
* [functional_test_runner] Better error handling
* [functional_test_runner] Add in new Tile Map tests
* Incorporate changes from master
* [functional_test_runner] validate that every test file has a single top-level suite
* Update contributing doc with link to full doc
* [docs] Spelling and grammar fixes
* docs: writing and running functional tests
* [docs] Move plugin doc to plugin area
* [docs] Housekeeping. Doc in wrong place
* [docs] Remove dup doc file
* [grunt] Only run mocha_setup when running tests, not every grunt task
* Integrate angular-translate globalization framework with i18n engine
* Provide template for enabling translations in an AngularJS view by translating a view
* Verification tool for translation keys used in angular-translate
* Documentation
* Initial import
* updating the editor width to match the new specs
* Adding tribe node support
* Adding tests for server libs
* removing bluebird
* removing extra cruft
* Fixing the font sizes
* Fixed the updating code
* Adding brushing
* Fixing linting issues
* Adding global filters
* Adding missing packages
* Default gauge style to half circle
* Fixing the markdown css bug
* Adding tests for the get_vis_data api
* Adding time offset
* Adding time offset to each type
* fixing bugs from time offset
* adding index pattern option to series
* Adding index pattern overrides
* Adding index pattern overrides
* Fixing tests
* Fixing brushing in the vis editor
* Changing the label
* Change the behavior of selecting a pipeline agg when only one exists.
* Refactoring series a bit
* Changing series options to just options
* Making sure we honor the toaster container height
* Adding first tests
* renaming vis_config to panel_config
* renaming vis_config to panel_config
* Adding more tests
* adding more tests
* removing api subdirectory
* refactoring get_vis_data (breaking it up and removing unused imports)
* reorganizing the visualization directory
* Re-organizing directory layouts and moving things to more logical places
* Refactoring React compontents to use ES6 syntax and adding propTypes for each. Also refactored out splats as much as possible.
* Adding serial differencing
* Refactored gauge to use 2 components instead of 4
* Finishing react refactor on visualizations. Consolidated legned funtionality
* Refactoring series config and removing a bunch of duplicate code
* fixing series config name
* Fixing numbers and strings (doesnt matter which it is); Fixing classname
* Changing the way the dark theme works
* Adding new vis into list for test
* Adding empty bucket check
* Fixing the index patterns in the aggs
* Fixing typo
* Refactoring vis_data
* Fixing std_metric
* Fixing refresh-hack
* Adding tests for get_splits, get_last_metric, map_bucket
* Fixing the error handing
* removing restrictions
* Sometimes values are strings or numbers... it doesn't matter
* Adding new color options for splits
* Fixing colors
* fixing size
* Adding support for fitlers agg
* Fixing tests
* Fixing splits for filters
* Fixing Top N to work better with fitlers
* Adding annotation editor
* initial work for annotations
* Finalizing annotations
* Fixing label
* making it expandable
* Fixing hacks fixed by #10175
* Fixing bars to use the same stacking options as lines
* Getting rid of align by colons
* removing unused depends
* removing unused depends
* Changing to readable lodash function
* Adding missing parens
* refactoring custom color picker
* Removing string refs and converting uncontrolled components
* Fixing the controlled components where value maybe null; converting error to css
* refactoring styles from components
* fixing the refresh behavoir borked by fullEditor
* Adding the executor service
* Fixing the test directories
* fixing save
* Adding filter ratios
* Fixing controlled components
* Trying to fix the weird typing
* Fixing offset bug with days
* Adding percentile rank
* Fixing yaxis updates; fixing percentile rank layout; adding steps to line chart
* removing unused depends
* Fixed a bug with the index patterns updating; fixed bug with charts rendering too much
* Fixing tests
* Commenting out React tests because the ENV must have change and they are no longer working
* Moving bucket transform
* moving calculate auto
* Moving calculate_indices
* moving extended_stats_types && get_agg_value
* moving get_buckets_path
* moving get_sibling_agg_value
* moving parse_settings
* moving series_agg
* Moving unit_to_seconds
* Fixing tests
* Fixing per PR
* Renaming vars to make it more clear what's happening
* Changing the way testible functions are exported
* fixing tests
* removing unused imports; fixing typos; fixing package name
* Name has to match the plugin path
* Fixing typos; removing unused imports
* fixing tests
* rearanging and removing unused imports
* Fixing a bug with unque names for radio buttons on the same form
* Fixing filter ratio to use a metric instead of just count
* fixing a bug with the new filter ratios
* Fixing the file path from the #8
* Fixing renderComplete trigger; Fixing embedded mode; Changing names for Timelion and Time Series Visual Builder
* Fixing name
* Fixing docs
* Fixing a typo for the field select for terms splits
* Fixing tests
Backports PR #10503
**Commit 1:**
Update doc
Include elasticsearch.tribe.requestTimeout setting
* Original sha: 5a01e24695
* Authored by Nikhil Patel <niks999@gmail.com> on 2017-02-22T11:17:01Z
* Committed by GitHub <noreply@github.com> on 2017-02-22T11:17:01Z
This adds a link to the detail view of discover rows to switch to a view of the documents immediately before and after the selected document. Since that view uses the timestamp field of the index pattern, it is only available for time-based indices.
See #9198 for detailed screenshots.
* adding vislib chart grid
* updating vislib to correctly render all new features
* adding new options to kibana visualizations
* update vis icon on save
* updating documentation
* fixing unit tests
* cleaning up
* updating based on UI review
* adding visualize editor unit tests
* selenium tests
* additional option tabs
* some more changes to the tabs/options [thanks CJ]
* going back from Category/Value axis to X/Y axis
* fixing unselected dropdown options
* updating based on last UI review
* updating based on last review
* updating based on last review
* fixing issue with axis titles
* allowing to specify only upper or only lower data bound
* updating based on brandons review
* fixing horizontal bar chart labels
* fixing test
* adding backward compatibility
* updating based on last review
* fixing selenium tests
* Add all_fields to highlight query to improve highlighting
* Refactor highlighting and move out of _flatten
* Make changes as per @bargs' requests
* Add documentation about highlightAll setting
* Fix docs typo
* Remove unused function
* Remove unused code
* Update managing-fields.asciidoc
* Remove references to Groovy
* Add information about Painless
* Link to blog for additional examples
* Update managing-fields.asciidoc
Make editorial changes per @debadair's feedback.
* [tribe] Init docs
* [docs] Init es client section
* [docs] Link to client api, move client library docs to core development section
* [docs] Add tribe server settings
* [tribe] Link to elasticsearch tribe docs
* [tribe] Document which nodes server configuration points towards
* [docs] Add index link to elasticsearch clients section
In `tutorial-define.text.asciidoc`, it is stated that the typical index name contains the date as `MM-DD-YYYY`, and then proceeds to give an example of how a log index from May, 2015 would look like: `logstash-2015.05*`, which doesn't match the typical pattern for dates stated above.
This PR changes the date pattern, as to me `YYYY.MM.DD` is more accurate on a world-wide scale.
* adding UI styles (should extract)
* adding heatmap vislib type
* adding heatmap visualization
* adding documentation
* renaming heatmap options
* fixing options issues
* fixing color selection
* fixing / adding tests
* adding more color schemas
* adding more options
* adding cell labels
* fixing selenium test
* only allow to rotate labels by 90 degrees
* converting color number slider to number input
* hide labels if they don't fit
* fixing small issues
* improved range options
* fixing based on Thomas' review
* rebasing on master and fixing linting issues
* adding selenium tests
* fixing alerts
* fixing padding
* fixing based on review
* fixing math
* fixing custom range options
* removing $timeout
* notification in case labels were hidden
* fixing tests
* fixing based on last review
* fixing based on thomas' review
* docs: kibana developer docs
This is the beginning of developer-focussed docs for Kibana. The content
is mostly pulled directly from the old wiki in the github repo.
* docs: known plugins for 5.x
We made a mistake in opening up Kibana scripted fields to any and all
langs enabled in Elasticsearch. Kibana needs to do some magic to get
certain scripted field features to work
(https://github.com/elastic/kibana/pull/9171) and we can't commit to
supporting anything beyond expression and painless scripts. On top of
that, the other languages are being removed in ES 6.0 anyway. This commit
makes that stance explicit by disallowing anything other than those two
choices.
A tag cloud visualization is a visual representation of text data, typically used to visualize free form text. Tags are usually single words. The font size of word corresponds with its importance.
* sorting chart xValues by metric sum
* fixing tests
* adding order buckets by value option to point series charts
* fixing tests
* fixing tests
* Updating based on CJs comments and adding documentation