Kibana Canvasをはじめてみよう

# はじめに
こんにちわ。かわちゃき(@yu_kawachaki)です。

この記事は[Elastic stack (Elasticsearch) Advent Calendar 2018](https://qiita.com/advent-calendar/2018/elasticsearch)の6日目です。

今回のアドベントカレンダーには、Canvasの記事が複数件エントリーされそうなので
たくさんの人がCanvasを触りはじめているんだな！とうれしいばかりです：）
私の記事は、Kibana Canvasをぽちぽちしはじめた時のことを振り返りながら、はじめてCanvasを触ってみるならこんな感じ。というのを記事にしてみました。

# 内容
Kibana Canvasを触ったことがない、触りたいなという人が感覚をつかむための記事です。
6.5にはサンプルデータが用意されているのですが、スタイリッシュすぎるので、Elastic{ON} 2018でお馴染みの[Café Canvas](https://www.elastic.co/blog/elasticon-kibana-canvas-story-elasticoffee)を構築して、カスタムしてみましょう。
![cafecanvas01.png](https://qiita-image-store.s3.amazonaws.com/0/309010/04f8acc8-2225-0182-0d10-db1744592666.png)
データは[Github](https://github.com/elastic/examples/tree/master/canvas/elasticoffee)のexamplesを使います。

# 前提条件
- Elasticsearch,Kibanaがインストール済み
- Elasticsearch,Kibanaのバージョンは6.5.1

# やっていく

まずexamplesの手順に沿って、サンプルデータを投入します。
[Github](https://github.com/elastic/examples/tree/master/canvas/elasticoffee)から資材をダウンロードしておきます。
README.mdに沿って進めていきます。

## To load the data
Elasticsearchにデータを投入します。
`Kibana`→`Dev Tools`→`Console`に`elasticoffee-data.bulk`をコピペして`▶`を押して実行します。

```
POST _bulk
{ "index" : { "_index" : "elasticoffee", "_type" : "doc", "_id" : "1" } }
{"sceneID": "2", "sceneData": "0", "entityID": "zwave.quad2", "quadId": 2, "quadMod": "1", "@timestamp": "2018-02-27T22:26:39Z", "beverageClass": "Hot Beverages", "beverage": "Latte", "beverageSide": "left", "beverageIndex": 5, "quantity": 1}
(略)
```

実行すると、今後非推奨な形式だよ！と出力されますが、今回は気にしない。

```
#! Deprecation: the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template
{
  "took" : 616,
  "errors" : true,
  "items" : [
    {
      "index" : {
        "_index" : "amaresponses",
        "_type" : "doc",
        "_id" : "1",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 0,
        "_primary_term" : 1,
        "status" : 201
      }
    },
(略)
```

手順の通り、データが入っていることを確認します。

```
POST /amaresponses/_search
```

## To load the Canvas workpad(s)

次にCanvasのworkpadのデータをインポートします。
Kibanaのトップページから、`Canvas`→`Import workpad JSON file`から`canvas-workpad-CafeCanvas.json`を選択します。

これで準備は完了です。
Canvasを使ってみましょう。

## Time filterを変更してCanvasを感じてみる
`Time filter`の期間を変更してみましょう。
![cafecanvas02.png](https://qiita-image-store.s3.amazonaws.com/0/309010/e206fa16-b336-b293-953e-b343693a862d.png)
Canvasっぽさが味わえます。
この設定どうなっているかな？と思ったときは、右下の`</>Expression editor`をクリックして、コードを確認しましょう。

## Metricを使ってカウントしてみる
次にelementを作ってみましょう。
今回は全コーヒーの杯数を表示するelementを作成します。

`Metric`を選んで、右下のコーヒーカップの上に配置します。
右側の`Data`でTimelionを選び、クエリに`.es(index="elasticoffee")`を書いて`save`しましょう。
`Display`のMeasure Numberは`Count`→`value`を選びます。
`Label`は消しちゃいましょう。
フォントは白に。
これで8種類のコーヒー杯数の合計値を出すelementの完成です。

# おわりに
ぽちぽちして、おしゃれな画面ができる。最高。
Canvasを学ぶ時のサンプルとしては、[AMA Metrics Canvas](https://github.com/elastic/examples/tree/master/canvas/ama)や、[ElastiCup](https://github.com/eeddaann/ElastiCup)もオススメです。
TwitterハッシュタグをCafe Canvas風に可視化した[こちら](https://qiita.com/yu_kawachaki/items/b206114219d4cf184742)もよければご参考に:baby_chick:
それでは、みなさん。ステキなCanvasライフを！ 

# 参考文献
Canvasを触る時に参考にしているページです。
https://www.elastic.co/blog/getting-started-with-canvas-in-kibana
https://www.elastic.co/blog/elasticon-kibana-canvas-story-elasticoffee
https://www.elastic.co/blog/elasticon-kibana-canvas-story-ama
https://www.elastic.co/blog/kibana-canvas-metric-and-markdown-elements