Kibana ships with a functional tilemap visualization. This plugin provides an additional tilemap visualization containing the enhancments listed below.
Resolves issue Filter geohash_grid aggregation to map view box with collar
The existing tilemap loads all of the geohash grids at a single time. This can result in adding hundreds or even thousands of DOM elements at a single time. The browser is locked up while this process occurs.
The enhanced tilemap plugin phases-in geohash grids, loading 100 every 200 milliseconds, so that the browser never locks up. A control with a spinning icon is added to the map while grids are being phased-in. The control is removed once all grids are processed.
Show more than just the aggregation metric when mousing over a geohash grid marker. The enhanced tilemap allows for the display of any kibana visualization or saved search inside the popup. The visualization or saved search are filtered by the geogrid coordinates - showing just the results for the moused-over cell.
Add a WMS overlay to the tilemap.
View aggregated results and document features in the same map. When Sync kibana filters is checked, kibana filters are sent to the WMS server resulting in tiles that reflect the time range, search query, and filters of your kibana application. Requires WMS to be served from an elasticsearch Store. Follow the geoserver guide for instructions on setting up a WMS layer pulling data from your elasticsearch cluster.
Click the polygon icon and draw a polygon on the map. The enhanced tilemap plugin will create a geo_polygon filter.
The geohash_grid aggregation only supports the geo_point datatype. Geospatial queries created by the existing tilemap plugin can only be applied to the geo_point field selected for the aggregation. When your data represents large geospatial shapes, this limitation can provide misleading results as documents that intersect the query my be omitted if their point representation is not accurately reflected in a geo_point field.
While the enhanced tilemap plugin cannot provide geohash_grid aggregation support for the geo_shape datatype, it does provide the ability to create geospatial queries on a geo_shape datatype. That way, queries accurately represent the results for geospatial shape intersection. Note: The index still requires a geo_point field for the aggregation (storing the center of the shape as a geo_point field works well).
Kibana's tilemap visualization has a neat feature where you can draw a rectangle on the map and create a geo_bounding_box filter. The limitation arises when multiple bounding boxes are needed. Each drawn rectangle creates a new geo_bounding_box filter that are ANDed together resulting in "No results found" messages across all visualizations.
The enhanced tilemap visualization allows for the creation of multiple geospatial filters that will be ORed together. Each drawn rectangle or polygon will append a geo filter to an ORed array.
- Set view Leaflet control.
- mouse latitude and longitude display control. Click display to toggle decimal degrees, degrees minutes seconds, and MGRS.
- Map scale control. Click for measurement tool.
- Scroll map on mouse zoom. Feature can be turned off in options.
- Slider control in legend to hide aggregation grids outside of selected range.
The existing tilemap generates quantized range bands dynamically. The enhanced_tilemap provides the ability to set static quantized range bands.
Sync map movements when dashboard contains multiple map visualizations. Map syncing implemented with Leaflet.Sync
Performance tip Store enhanced_tilemaps belonging to the same dashboard at identical zoom levels. When enhanced_tilemaps are stored with different zoom levels, the browser will have to make 2 requests to elasticsearch for data. The first will get all data at different zoom levels. Then the next, will fetch all data at identical zoom levels. The second request can be avoided if all maps are stored at identical zoom levels. Check the map zoom level by clicking the set view control (eye icon) in the upper left corner of the map display.
./bin/kibana-plugin install https://github.com/nreese/enhanced_tilemap/releases/download/v2017-04-19/enhanced-tilemap-v2017-04-19-5.0.2.zip
./bin/kibana-plugin install https://github.com/nreese/enhanced_tilemap/releases/download/v2017-04-19/enhanced-tilemap-v2017-04-19-5.1.2.zip
./bin/kibana-plugin install https://github.com/nreese/enhanced_tilemap/releases/download/v2017-04-19/enhanced-tilemap-v2017-04-19-5.2.2.zip
./bin/kibana-plugin install https://github.com/nreese/enhanced_tilemap/releases/download/v2017-04-19/enhanced-tilemap-v2017-04-19-5.3.0.zip
./bin/kibana plugin -i enhanced_tilemap -u https://github.com/nreese/enhanced_tilemap/archive/4.x.zip
./bin/kibana-plugin remove enhanced_tilemap
- clone git repo in
kibana_home/plugins
cd kibana_home/plugins/enhanced_tilemap
bower install
Use npm@2 (as root npm install -g 'npm@<3'
). npm@3 installs dependencies as maximally flat. As a result, kibana_home/plugins/enhanced_tilemap/node_modules
contains the folder lodash. During the kibana build process, require.js finds this version of lodash instead of the version under kibana_home/node_moduldes
. If you don't want to install npm@3, then manually delete the folder kibana_home/plugins/enhanced_tilemap/node_modules
before kibana builds kibana_home/optimze/bundles/kibana.bundle.js
.
- clone git repo in
kibana_home/plugins
cd kibana_home/plugins/enhanced_tilemap
npm install
npm test