Amazon Elasticsearch Service で Elasticsearch 5.1 の利用が可能となりました

Elasticsearch Service

おはようございます、藤本です。

本日は嬉しいアップデートがありました。Amazon Elasticsearch Service に Elasticsearch 5.1 / Kibana 5.1 が追加されました。

Elasticsearch 2 の対応には GA リリースから 1年弱ぐらいかかった覚えがありますので、今回の対応の早さは驚きました。

概要

Amazon Elasticsearch Service は Elasticsearch / Kibana の AWSマネージドサービスです。Elasticsearch クラスタの管理・運用を AWS が行ってくれるため、利用者は画面を数操作するだけで Elasticsearch / Kibana の利用を開始することができます。今までは Elasticsearch 1.7/2.3 を利用できました。それが今回のアップデートにより、Elasticsearch 5 を利用可能となりました。

Elasticsearch 5 は多くのアップデートがありました。アップデート内容に関しては下記まとめエントリをご参照ください。

変更点まとめ

バージョン

今回追加された詳細なバージョンは以下となります。

  • Elasticsearch 5.1.1
  • Kibana 5.1.1

API

Amazon Elasticsearch Service は Elasticsearch の全ての API が利用できるわけではなく、制限がかけられています。今回、追加された Elasticsearch 5 はいくつかの API が追加開放されました。追加された API は以下のとおりです。

  • /_reindex
  • /_rollover
  • /_search(profile API)
  • /_shard_stores
  • /_shrink
  • /_tasks
  • /_update_by_query
  • /_delete_by_query
  • /_validate
  • /_explain
  • /_field_stats
  • /_mtermvectors
  • /_cluster/allocation/explain
  • /_cluster/pending_tasks
  • /_cluster/state

個人的には reindex API が嬉しいです。reindex API を簡単に説明すると既存のインデックスをドキュメントをそのまま別のインデックスとしてコピーする機能です。Elasticsearch のインデックスはスキーマ変更(フィールドタイプや Analyzer)が出来ないため、スキーマ変更するためにはインデックスを再生成する必要があります。reindex API は単純なコピーだけでなく、スキーマ変更、データ変換などを行うことが可能です。

プラグイン

Amazon Elasticsearch Service はプラグインを追加することができません。Elasticsearch 5 で利用可能なプラグインが増えました。追加されたプラグインは以下の通りです。

  • Smart Chinese Analysis plugin
  • Stempel Polish Analysis plugin
  • Ingest Processor Attachment plugin
  • Ingest Geoip Processor Plugin
  • Ingest User Agent Processor plugin
  • Mapper Murmur3 plugin

こちらから分かる通り、Elasticsearch 5 で追加された Ingest Node も利用可能です。

Painless Scripting

Elasticsearch 5 からセキュアで、高速な独自スクリプト言語が利用可能となりました。今まで Amazon Elasticsearch Service は Scripting を利用できませんでしたが、追加された Elasticsearch は Painless Scripting に限り、Dynamic Scripting を利用可能となりました。

Elastic のドキュメントから引用しますが、下記のような構文となります。なんとなくわかりますよね。

GET hockey/_search
{
  "query": {
    "function_score": {
      "script_score": {
        "script": {
          "lang": "painless",
          "inline": "int total = 0; for (int i = 0; i < doc['goals'].length; ++i) { total += doc['goals'][i]; } return total;"
        }
      }
    }
  }
}

Kibana 5 の標準実装

Elasticsearch と同じく Kibana もプラグインを追加することはできません。そのため今まで利用できなかった Timelion、Console(旧名:Sense)が Kibana 5 で標準実装となり、利用可能となりました。

試してみた

それでは Elasticsearch クラスタを起動してみます。東京リージョンでも利用可能です。手順はバージョン選択時に 5.1 が追加されているだけです。

Elasticsearch クラスタ起動

Get Started

Amazon Elasticsearch Service の画面へ遷移し、「Get Started」をクリックします。

Amazon_Elasticsearch_Service_Management_Console

Define Domain

クラスタ名、およびバージョンを設定します。このバージョンに 5.1 が追加されました。

Amazon_Elasticsearch_Service_Management_Console 2

Configure Cluster

インスタンスタイプ、ディスクサイズなどを設定します。Elasticsearch 5.1 からは t2.small.elasticsearch が最小インスタンスタイプとなりました。1.7/2.1 は t2.micro.elasticsearch が選択できていました。

Amazon_Elasticsearch_Service_Management_Console 3

Set up access policy

アクセス制御を設定します。今回はアクセス元IPアドレスにより許可します。

Amazon_Elasticsearch_Service_Management_Console 4

Review

設定内容を確認します。

Amazon_Elasticsearch_Service_Management_Console 5

クラスタの起動が開始されます。

Amazon_Elasticsearch_Service_Management_Console 6

動作確認

クラスタ起動が完了すると下記のように Domain status が Active となります。

Amazon_Elasticsearch_Service_Management_Console 7

Endpoint の URL で Elasticsearch にアクセスしてみます。

# curl search-es5-4lmd4326qlyvabkc7jsi2t5rwe.ap-northeast-1.es.amazonaws.com
{
  "name" : "4pSbmNX",
  "cluster_name" : "341946975188:es5",
  "cluster_uuid" : "88UaF03uQladOVP9gua7Dg",
  "version" : {
    "number" : "5.1.1",
    "build_hash" : "5395e21",
    "build_date" : "2016-12-15T22:47:19.049Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}

バージョンが 5.1.1 です。

Kibana の URL で Kibana にアクセスしてみます。

Kibana

Kibana 5 の画面が表示されました。

Kibana 2

バージョンは 5.1.1 です。

まとめ

いかがでしたでしょうか?

Amazon Elasticsearch Service で待望の 5.1.1 が追加されました。更に今まで使えなかった Scripting が Painless Scripting のリリースにより開放されました。今まで Amazon Elasticsearch Service に手を出せなかったシステムでも少し敷居が下がったのではないでしょうか。