概要
kibana 5.0.0-alpha4では、CSVのアップロードができるようになったとのこと。
csvをlogstashや自前のスクリプトで云々せずに、さっと取り込めてさっと確認できる、というのは助かるかも、ということで試してみた。
試した環境
app | version | remarks |
---|---|---|
elasticsearch | 5.0.0-alpha4 | dockerで動かす |
kibana | 5.0.0-alpha4 | dockerで動かす |
dockerですぐに試せるのは良い時代になったものです。
テスト用にkibana向きではないけども、適当なCSVを以下から拾ってきた。以下、ひったくりデータを使う。
CSVアップロードを試す
IndexをCSVから作成する
Managementから 「Upload CSV」を選択する。アップロードできるファイルは1GBまで、と。
ファイルアップロードする
アップロードすると、プレビュー画面が開きます。
プレビューは20列までしかされないので、20列を超えるCSVを取り込んだときは、警告がでますが、プレビューの制限であって取り込みの制限ではないので安心して、Nextを押せばいいと思います。
注意点
FieldMismatch at line 9 - Too few fields: expected 28 fields but parsed 1
というエラーが出るとき。CSVの最終が改行コードだけの行で終わらないようにすると、エラーが消えました。
Excel使いが好むShift-JISのCSVファイルは、文字化けしてプレビューの時点でエラーになります。UTF-8にしましょう。
Step2 Review
この画面では、インデックス名、時系列データなのかどうか(time basedのチェックボックス)、時系列データの場合は、そのフィールドを指定したり、CSVから取り込んだフィールドの定義を行います。
Typeでは、以下のものが選択できるようです。elasticsearch5からは、stringはtextやkeywordになっていると思うのですが、画面上はstringになっています。
Type |
---|
string |
number |
boolean |
date |
geo_point |
ip |
フィールドの定義を終えたら、次に進みます。
もし、既にあるインデックス名を指定すると、こんなエラーが出ます。CSV1ファイルで、1インデックスという認識なのかもしれません。
Add Data: Error 409 Conflict: Cannot create an index pattern via this API if existing indices already match the pattern
Step3 Upload
問題なく取り込めたら、こんな画面になりました。
取り込み時にエラーがでるパターンとしては、こんな感じでしょうか。
- dateと指定しているのに、dateと解析される文字列ではなかった場合
Doneを押してアップロードを終了します。
Discover画面
Doneを押したら、Discover画面に遷移します。さっき取り込んだものが表示されています。
マッピングの確認
こうして取り込まれたフィールドがどんな定義になっているかをConsoleから確認
内部的には、textとkeywordと両方持つようになってました。
GET インデックス名/_mapping
{
"hoge": {
"mappings": {
"_default_": {
"properties": {
"ひったくり区分": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"丁番": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
感想
- 事前にテンプレートを用意しておいたほうよさそうな感じ。