LoginSignup
4
4

More than 5 years have passed since last update.

Elasticsearchで品詞分解② (Kibana編)

Last updated at Posted at 2018-01-16

この記事は、Elasticsearchで品詞分解① (テンプレート編) の続きです。

テンプレートとマッピングの定義まで出来たので、データを投入して、Kibanaで表示させてみます。

テストデータ投入

{
    "body_txt": "jsoupというとスクレイピングがよくに出てきますが、こういう使い方もありますよ、という事で。ログイン->cookie保持->ログイン後処理というjsoupコードが日本語であんまりなかったので、せっかくの機会ですし纏めてみました。jsoupで一番苦労するのは、実際に処理が実行されるURLがどういうものなのか、を見つける事ですね。formで指定されていたり、リダイレクトされたり…メモ帳でtsvを触ると、なぜか先頭に?が入ってしまう、という謎の現象が起きたので、IPアドレスの取得方法には正規表現を使用しています。エディタの指定とかできないんで…つい昔の習慣で、beanを作って詰めてしまいますが、最近はこうじゃないんですかね…新しい方法も勉強しないと^^;", 
    "execDate": "2018/01/16T10:40:00+09:00", 
    "paragraph": 1, 
    "title": "[Java]jsoupでブラウザから時刻合わせ"
}

Kibana確認

Kibanaでindexを確認してみると…

image.png

body_txtだけがテンプレートの条件に合致して、品詞分解が行われました。
searchable等のチェックは、マッピングで指定したfielddata等の指定に依ります。(どれがどの項目に対応してたかは忘れました…)

Discoverで見てみると…

image.png

なぜか品詞分解結果ではなく、投入したデータそのものが表示されています…
Dev Tools で確認しても、投入したデータだけが表示されており、マッピングで追加したフィールドは表示されませんでした。
では、分解に失敗しているかというと、そうでもないようです。

フィルタを原型「纏める」で検索しても、「纏めて」の箇所がヒットしました。

image.png

マッピングで、fielddatastoreも設定しているので、ビジュアライズのフィールドにも設定可能です。

名詞タグクラウド
image.png

動詞タグクラウド
image.png

何となく分解はうまくいってそうですが、やはりDiscoverに出てこないとちょっと分かりにくいですね。
という事で、Discoverに分解した項目のリストを表示すべく四苦八苦してみました。

Scripted fields

KibanaのScript FieldでPainlessを使う (公式)

Scripted fieldsにはpainlessという言語が、5.0より追加されています。
これがなかなか情報がなくてですね……
しかも、フィールドの記載ミスとかの場合、エラーじゃなくてワーニングで出てくるという謎仕様。
#多分indexのマッピングが変わった時とかに対応してるんじゃないですかね…

そんなこんなで試行錯誤しながら作成した、品詞分解後の項目リストを結合するスクリプトが以下です。

image.png

def analyzed = doc['body_txt.analyzed-meishi'];
def txt = "";
for (int i = 0; i < analyzed.length; i++) {
  txt = txt + "/" + analyzed[i];
}
return txt;

Kibana再確認

各品詞の項目リストを作成して、KibanaのDiscoverを再表示。

image.png

分解された項目が一行に結合されて表示されました!

所感

Scripted fields 難しいです…もっと色んな事ができそうなんですけどね~
ただ、使いすぎると重くなるそうなので、その辺の兼ね合いが難しいですね。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4