I have played around with
Elasticsearch for a while and it has been my first time I was working with a
NoSQL database. It’s been a lot of fun to load some data and see what querying techniques are available. I was particularly interested in seeing what kind of support for geospatial operations does the
elasticsearch provides. As it turned out, there is very good support for
GeoJSON data structures for storage and visualization (both as point data and as areas). You can even run the spatial queries (e.g. find all points within a specified polygon) and draw the results on a tiled basemap as an operational layer (using
Kibana) along with using regular SQL-like attribute data filtering.
You can load your geospatial datasets into
elasticsearch NoSQL database and then visualize it on a basemap as well as run some spatial querying, draw heat maps and choropleth maps using own regions (polygons that can be enriched with the point data). This is just a few maps I’ve created really quickly loading the cities and states geodatabase feature classes into the NoSQL database and then using
Kibana web interface to author visualizations:
It all seems to be very powerful yet fairly easy to configure. Loading the data into the database was not very straightforward, though, because as I understood, you cannot feed the source
GeoJSON files into the
elasticsearch when using the
_bulk api to load documents into an index. You can read more about
GeoJSON support in
elastic in the docs page Geo-Shape datatype.
I’ve written a tiny Python script that will convert a geodatabase feature class into a
GeoJSON and then construct a new
.json file with the proper format that can be loaded into the
To play with the
elasticsearch API interface, I’ve used Postman. It’s a very handy application that will let you construct all kinds of
HTTP requests and save them to reuse later on. Using Postman, I was able to submit the
PUT request to load documents from the
.json file I’ve created by running the Python script using the binary body and browsing to the source data file.