こんにちは、@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