@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

Analyze UIとKibanaのプラグインの作成方法(第1回)

あけましておめでとうございます。今年はサボりがちだったブログをちょっとずつ復活させようかと。 ということで、第1弾として、昨年少し作っていたKibanaのプラグインを何度かに分けて紹介したいと思います。

今回はAnalyze UIというプラグインの紹介です。

今回はインストール方法と簡単な機能紹介です。 細かな紹介は個別にやりたいと思います。

Analyze UI pluginとは?

Elasticsearchの_analyzeというAPI(個人的に好きなAPIです)をご存知でしょうか?

Elasticsearchは全文検索エンジンで、データの検索には転置インデックスというものを使用します。 Elasticsearchにデータを登録する際に、text型のデータの場合、この転置インデックスのキーとなる単語を決める処理のことをAnalysisと呼びます(Analysisの詳細については割愛します。後日説明するかも?)。 このAnalysisの処理が、入力されたデータの文字列に対してどのように行われて、結果としてどんな単語がキーとして用いられているかを確認できる機能が_analyze APIです。検索で単語がうまくヒットしないな?とか、なんで、こんなので検索結果に出てくるんだ?といった場合、このAPIを利用すると、どのような単語で転置インデックスが作られているかがわかるので、検索にヒットしない/する理由を見つけることができます。

Elasticsearchの便利な点はRESTfulなAPI+JSONでやりとりができる点なのですが、_analyze APIの結果をJSONで受け取っても、見るのにちょっと苦労します。。。こんな感じ。

リクエスト:

1
2
3
4
5
POST _analyze
{
  "analyzer": "kuromoji",
  "text": "今年はブログをいっぱい書きますよ!"
}

レスポンス:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
  "tokens": [
    {
      "token": "今年",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "ブログ",
      "start_offset": 3,
      "end_offset": 6,
      "type": "word",
      "position": 2
    },
    {
      "token": "いっぱい",
      "start_offset": 7,
      "end_offset": 11,
      "type": "word",
      "position": 4
    },
    {
      "token": "書く",
      "start_offset": 11,
      "end_offset": 13,
      "type": "word",
      "position": 5
    }
  ]
}

このくらいの量であればまだなんとかなりますが、文章が長くなると辛いですよね。

ということで、GUIがあると便利だろうなぁと。で、作ってみましたというのが今日紹介するKibana用のAnalyze UIプラグインです。 こんな感じで、Kibanaのアプリの一部として動作しブラウザ上で、入力テキストの文字列がどのようにanalyzeされて、単語になるかがわかります。

(先ほどのAPIのサンプルと同じものを画面で入力した結果になります)。

インストール方法

現時点の最新版Kibana(6.1.2)に対応しています。 Kibanaのディレクトリでkibana-pluginコマンドを利用してインストールします。

1
./bin/kibana-plugin install https://github.com/johtani/analyze-api-ui-plugin/releases/download/6.1.2/analyze-api-ui-plugin-6.1.2.zip

これだけです。 で、Kibanaを起動していただくと、左のメニューに「Analyze UI」という項目が増えています。

クリックすると、Analyze UIが表示されます。

初期画面は入力された文字を特定のAnalyzerで処理した場合の結果を見るための画面です。綱目の説明は画像をご覧ください。

先ほどのJSONよりは見やすくなったかと思います。 そのほかにもいくつか画面や機能があるのですが、今日はこの辺りで。 「_analyze API便利なんだけど、JSONは。。。」とか「検索うまくできないなぁなんでだろう?」と思っている方は、ぜひ試して見ていただければと。 問題点などありましたら、GitHubのIssueを登録してください。

Comments