こんにちは、@shin0higuchiです😊
本日Elastic Stackの7.5がリリースされました。
今回は個人的に興味をひかれた新機能に絞って紹介します。
どんな機能が追加されたのか、早速見てみましょう。
リリースノートはこちら
https://www.elastic.co/guide/en/elasticsearch/reference/current/release-notes-7.5.0.htmlwww.elastic.co
Kibana Lens
Kibanaのvisualizationをより感覚的に作成するための機能、Lensがbetaリリースされました。
データをドラッグ&ドロップで追加しながら、グラフの種別切り替えも簡単です。
これは今回の目玉機能と言えると思います。
画面左のフィールド一覧から、画面右のエリアにドラッグすることで作成するようなUIになっています。
種別を切り替えた時に、どのような見た目になるのかも一覧でき、Kibanaの操作に慣れていないユーザーでも簡単に利用できそうです。
data frame analysisにclassificationが追加
classificationおよび、その評価を行うevaluation APIが実装されました。
※今の所、Elasticsearch側のAPIは実装されていますが、Kibanaの画面から指定できるのはoutlier_detectionとregressionのみのようです。
簡単に試すために、titanicのデータセットを取り込みます。
data frame analyticsのジョブを作成します。
titanic-dataを分析し、結果はtitanic-data-predictionに入ります。
今回のポイントは、analysisの中に"classification"を指定できるようになった点です。
PUT _ml/data_frame/analytics/titanic-data { "source": { "index": "titanic-data" }, "dest": { "index": "titanic-data-prediction" }, "analysis": { "classification": { "dependent_variable": "Survived", "num_top_classes": 2, "training_percent":80 } } }
ジョブをスタートし...
POST _ml/data_frame/analytics/titanic-data/_start
trainingに利用されたデータを省いて結果を取得します。
GET titanic-data-prediction/_search { "query": { "bool": { "filter": { "term": { "ml.is_training": false } } } } }
Hitsは次のようになります。
ml以下に分析結果が格納されていることがわかります。
{ "_index" : "titanic-data-prediction", "_type" : "_doc", "_id" : "07LNx24BGrho6pjYL9EM", "_score" : 0.0, "_source" : { "Survived" : 0, "Pclass" : 1, "Siblings/Spouses Aboard" : 0, "Parents/Children Aboard" : 0, "Sex" : "male", "ml__id_copy" : "07LNx24BGrho6pjYL9EM", "Age" : 64, "Name" : "Mr. Arthur Ernest Nicholson", "Fare" : 26, "ml" : { "top_classes" : [ { "class_probability" : 0.7037370235841935, "class_name" : "0" }, { "class_probability" : 0.2962629764158065, "class_name" : "1" } ], "Survived_prediction" : "0", "is_training" : false } } }
evaluate APIについても試してみます。
POST _ml/data_frame/_evaluate { "index": "titanic-data-prediction", "evaluation": { "classification": { "actual_field": "Survived", "predicted_field": "ml.Survived_prediction.keyword", "metrics": { "multiclass_confusion_matrix" : {} } } } }
評価結果は下記の通り。
{ "classification" : { "multiclass_confusion_matrix" : { "confusion_matrix" : [ { "actual_class" : "0", "actual_class_doc_count" : 545, "predicted_classes" : [ { "predicted_class" : "0", "count" : 483 }, { "predicted_class" : "1", "count" : 62 } ], "other_predicted_class_doc_count" : 0 }, { "actual_class" : "1", "actual_class_doc_count" : 342, "predicted_classes" : [ { "predicted_class" : "0", "count" : 71 }, { "predicted_class" : "1", "count" : 271 } ], "other_predicted_class_doc_count" : 0 } ], "other_actual_class_count" : 0 } } }
ちなみに、リリースノートでmulti classと書いてありましたが、下記のドキュメントによると、現状は2クラス分類のみがサポートされているようです。
Data frame analytics job resources | Elasticsearch Reference [7.5] | Elastic
今後の更新が楽しみな機能の一つですね。
enrich processor
ingest pipelineにenrich processorが追加されました。
このprocessorは、他のindexにあるdataを使って、情報を付加することが可能です。
logstashでのtranslate filterに近いものですね。
他のprocessorに比べると使い方が複雑になっています。
事前にenrich policyというenrich設定を登録しておき、processor側でそれを呼び出す形になります。
次のenrich policyは公式ドキュメントの例ですが、emailフィールドでマッチしたドキュメントの、["first_name", "last_name", "city", "zip", "state"] フィールドを取得する設定になります。
PUT /_enrich/policy/users-policy { "match": { "indices": "users", "match_field": "email", "enrich_fields": ["first_name", "last_name", "city", "zip", "state"] } }
processorは下記のように指定します。
"processors" : [ { "enrich" : { "policy_name": "users-policy", "field" : "email", "target_field": "user", "max_matches": "1" } } ]
個人的に割と欲しかった機能なので、非常に嬉しいです😊
詳細については、
Enrich your data | Elasticsearch Reference [7.5] | Elastic
をご参照ください。
SLM(Snapshot Life cycle Management)でsnapshotの管理が可能に
Kibanaの画面から、snapshotの自動取得および削除を設定できるようになりました。
Managementのタブから設定することができます。
まとめ
今回も大きな機能追加がいくつもありました。
ここで扱わなかったものも数多くあります。詳しくはリリースノートをご覧ください。
お読みいただきありがとうございました。
Acroquest Technologyでは、キャリア採用を行っています。
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。世界初のElastic認定エンジニアと一緒に働きたい人Wanted! - Acroquest Technology株式会社のエンジニアの求人 - Wantedlywww.wantedly.com