Welcome to the Canvas Technical Preview.

Hi there,
Below you'll find the stuff we've been hacking on recently, but this site is full of information about the project and its primary goal is to teach you and our co-workers how to get the most out Canvas. I suppose you probably want to Install Canvas before going any further. If you're not sure why you'd want to install Canvas, maybe read this introductory blog post on first instead.

From there, we figure you're here because you're the curious, insightful, adventurous type. You're probably a bit different and Canvas is definitely bit different. We know that people learn in different ways, so we've put together a few different styles of learning. If you're a visual learner you might enjoy the video series we're working on. If you prefer to curl up with a good book, take a look at our short stories. And if you're prefer to just get on with it, the reference documentation will be here when you need it.

-- Team Canvas and the Goat News staff

More Example Workpads!

Fri Mar 16 2018 08:13:00 GMT-0700 (MST)

Interested in trying Canvas out but don't know where to start? I don't know about you but I find it much easier to get started with a good set of examples. For that very reason I put together a number of examples. In this zip file you will find four example workpads and a python script to generate...

Read More

Café Canvas

Wed Mar 14 2018 10:37:00 GMT-0700 (MST)

If you attended Elastic{ON} '18 a couple weeks ago, you probably noticed that Canvas was used to power a lot of dashboards around the conference. Jamie Smith just wrote up a nice post about how the "Café Canvas" dashboard was created.

The workpad showed information about the coffee orders from...

Read More

We heard you like linking

Fri Feb 23 2018 10:53:00 GMT-0700 (MST)

Instead of just using the same URL and picking up where you left off using localstorage, Canvas now has proper routing! This means you can now link to workpads and share your work with other people. It also means that when you load Canvas in multiple browser windows, you no longer have odd state...

Read More

Hello Tinymath

Wed Feb 21 2018 01:03:00 GMT-0700 (MST)

The Goat News team is over here gearing up for ElasticON, so expect updates to be a bit behind. That said, 0.1.1825 is both Kibana 6.2.2 compatible AND brings with it our new math expression parser, Tinymath. MathJS served us well, but we needed something a bit more tailored to our needs. You'll...

Read More

It's all good

Tue Feb 13 2018 03:49:00 GMT-0700 (MST)

Well, 1813 didn't last long. Not that there was anything wrong with it. 1816 is now available which adds a new "ANY" option to the dropdown filter element. I also fixed the height of the code window so you don't have to resize it all the time.

Read More


Tue Feb 13 2018 02:24:00 GMT-0700 (MST)

I just released 1813 for Kibana 6.2.1 and it is much, much faster. Specifically when loading and refreshing entire workpads, performance is improved by 75-90%. That means workpads that used to take 20 seconds to load, now take 5 or less. And there's more good news coming on that front: I found a lot...

Read More

Fixed that mapping error you might have seen

Wed Feb 07 2018 05:13:00 GMT-0700 (MST)

You may have noticed a console error, something or another about mappings. We fixed that 0.1.1806 by using some really nice Kibana APIs, but this is important, pay attention: You will need to reindex your workpads. Don't worry, this is pretty easy. There are instruction below. The TL;DR is that...

Read More

Canvas for Kibana 6.2.0

Tue Feb 06 2018 09:09:00 GMT-0700 (MST)

Ignore all 1802 stuff. We cut 1799, which is compatible with Kibana 6.2.0. When we do eventually cut a 1802+ all that stuff you saw earlier will be true, but we need fix some interesting Kibana 6.2.0 behavior before that. Stay tuned.

Read More

Hidden gem: Advanced Filter

Fri Jan 26 2018 06:59:00 GMT-0700 (MST)

Sometimes we create hidden or debug functions in Canvas by simply not creating a UI for them. One of those hidden abilities is the "Advanced Filter" element. The advanced filter really is for advanced users since you need to know how Canvas filters work, but the gist is that it is an element that...

Read More

Switching data sources is fixed

Tue Jan 23 2018 08:51:00 GMT-0700 (MST)

We broke data source switching a bit ago. It still worked from the expression editor, but the switcher was wonky. Plus side, I identified an inconsistency in the public plugin API and rectified it. 0.1.1776 has the fix.

I put a dollar in the shame bucket for the break, and another in the awesome...

Read More

Look what I made

Fri Jan 19 2018 06:51:00 GMT-0700 (MST)

You can do some wacky stuff with the custom CSS support in Canvas. We're working on some ElasticON stuff and I stole some assets from our very talented designers to make this funky isometric map/chart thing. The little bubble chart CSS looks like this:

.canvas__element {
  background-color: #fff;...

Read More

Data munging tip #1: Adding a column with staticColumn

Fri Jan 19 2018 06:51:00 GMT-0700 (MST)

Canvas expressions have a few ways of adding a column to a data table. In this post we'll look at the simplest: staticColumn. This function is simple, effective and fast at add static values and, when combined with a sub-expression, summary columns. In these examples we'll use the demodata...

Read More

Did you know? URL parameters

Tue Jan 16 2018 08:18:00 GMT-0700 (MST)

If you're on this blog you've probably been around the Elastic stack for awhile. Remember Kibana 3? A little known feature of Kibana 3 was the ability to create "scripted" dashboards. You could use URL parameters to inject strings into the dashboard JSON, but there were all sorts of limitations. For...

Read More

Image Repeat element

Tue Jan 16 2018 08:18:00 GMT-0700 (MST)

And the 2nd in our "infographic" focused elements. The image repeat element repeats a supplied image a given number of times up to a specified maximum. You can also, optionally, supply an image to fill out the number up to the max. In this example we've used a full bottle as the image to repeat...

Read More

Image Reveal element

Tue Jan 16 2018 08:08:00 GMT-0700 (MST)

The holidays are well and truly over and we're back!. First up, this awesome new image reveal element. This takes in a number from 0 to 1 and uses it to decide what percentage of an image to show. In the image for this post you can see it slowly moving between 0.3 and 1.0. It also takes an option...

Read More

1736 and the alignment grid

Thu Dec 21 2017 02:14:00 GMT-0700 (MST)

There's actually been a bunch of changes lately, but this was one someone had asked for and was a quick and easy win. You can now hit ALT+G to toggle an alignment grid. Eventually we'll add snapping to the layout engine and this won't be needed anymore, but it works for now.

Read More

Sub-expressions now receive context

Wed Dec 13 2017 02:32:00 GMT-0700 (MST)

This change is actually a change back. When Joe and I were designing the Canvas expression language we decided that sub-expressions would receive the same context as the function they were an argument too. We removed that for a long time because it caused problems when type checking the input...

Read More

Pages feel faster!

Tue Dec 12 2017 03:54:00 GMT-0700 (MST)

Just pushed out 0.1.1676 which makes a big change in how we manage the page stack. Previously we would render each page as it loaded. This was pretty much fine, but it meant that every element's render function had to be really fast, otherwise there would be a blank spot on the page for a moment.


Read More

Fri Dec 08 2017 09:55:00 GMT-0700 (MST)

Can you spot the difference? The color palette is now a gradient. You can turn any color palette into a gradient by setting gradient=true in the palette function. Try out the example work pad linked a few posts down. Have a good weekend everyone!

Read More

Elasticsearch SQL is coming

Fri Dec 08 2017 09:24:00 GMT-0700 (MST)

No point in rolling this into a release just yet, but I started working on support for Elasticsearch SQL so we can hit the ground running the day it's released

Read More

There's a discuss thread

Thu Dec 07 2017 05:01:00 GMT-0700 (MST)

There's a Canvas thread going on the Elastic discussion boards about Canvas. Join us to swap tips and tricks, and talk bugs and features.

Find it here: Canvas thread

Read More

Update Notifications

Thu Dec 07 2017 04:19:00 GMT-0700 (MST)

We just cut a new release (0.1.1653) that includes update notifications. Keep an eye out for the goat and information on installing new builds. We're also working to include the change information in that update notification, but that isn't there just yet.

Want to install the new build? The...

Read More

Example workpads

Wed Dec 06 2017 07:28:00 GMT-0700 (MST)

We're planning to create a library of example Canvas workpads. Here's an example...of an example (ed note: Oooh meta). This shows you how to create a custom color palette for use with pie, plot, grid and anything you create that needs a palette

To try it out...

  1. Download the example file
  2. Open the...

Read More

Wed Dec 06 2017 05:11:01 GMT-0700 (MST)

We spent some time today talking about how to do multi "series" transformation on the data table, which led me to make a change to mapColumn. The mapColumn function now receives each row as a single row datatable. I find it more pleasant to use, and if you need to get a specific column value you can...

Read More


Wed Sep 20 2017 01:00:00 GMT-0700 (MST)

Sort of a silly example of how sub-expressions work, but this sizes every point randomly. The numeric value of point= is generated by math

esdocs index="usagov*" | pointseries y="bytes" x="@timestamp" color="geo.country_code" | plot defaultStyle={seriesStyle points={math "random() * 20"}}

Read More

Hax0r interfaces!

Fri Sep 15 2017 01:01:00 GMT-0700 (MST)

You can get soooo tacky with this. Whatever, it's your ball game, play it how you want. We really need to get a library of styles going.

Read More

Wed Sep 13 2017 01:01:00 GMT-0700 (MST)

And here is that filter stuff in action. Note that it also supports all the same filters as esdocs because it uses the same bool filter building code

Read More

Timelion support!

Wed Sep 13 2017 01:01:00 GMT-0700 (MST)

I added simple support for Timelion.

Because timelion requires a time range do to its magic, I've set it up so that it takes a to and from, but can also make use of a timefilter element. If you have a timefilter, it will use that, but the local to and from with override it.

Read More

Tue Sep 12 2017 01:13:00 GMT-0700 (MST)

And here it is in compact mode. Be careful with filter elements, they affect the entire work pad. If you wonder why some esdocs function isn't returning what you want, check for a forgotten time filter. That's your culprit. Also remember that you can ignore workpad filters in any expression by...

Read More

New time filter

Tue Sep 12 2017 01:11:00 GMT-0700 (MST)

This new time filter is super excellent. It is simpler than the core time picker by design.

Canvas workpads are tailored experiences and we want you to craft each element to their exact needs. For this reason we plan to make the time picker customizable. The quick ranges won't have to be static...

Read More