LoginSignup
8
8

More than 5 years have passed since last update.

Elastic Cloud も5.0対応したので試してみた

Posted at

Elastic Cloud

Elasticsearch 5.0GA がリリースされたのに伴い、Elastic Cloud も5.0対応になっているので、早速利用してみました。

Elastic Cloud は、Elastic社が提供するクラウドのマネージドサービスで、商用プラグインであるX-Packも利用することができます。
登録後2週間は、トライアルとして、Memory:1GB/SSD:24GBのプランが無料で利用できます。

また、これまでは、Memory:SSD=1:16のサイズだったのですが、5.0リリースの少し前に、料金そのままで1:24のサイズに拡大されているので、お得になっています。

クラスタ作成

ユーザ登録後、ログインすると、以下のような画面が表示されるので、「Create Cluster」ボタンを押下します。

ElasticCloud-first.png

クラスタ作成の画面に遷移するので、必要事項を入力して、クラスタを作成します。

ElasticCloud-CreateCluster1.png

  • Cluster Size
    • トライアル期間中は、Memory:1GB/SSD:24GBの最小サイズを指定して、好きなリージョンを選択します。
  • Region
    • Elastic Cloud は、AWS上に構築されているので、データ投入したり、何らかの処理を行うインスタンスと、できるだけ同一リージョンにするのが良いでしょう。
  • High Availability
    • 「1 data center」のタイプを選択します。信頼度に応じて、複数のデータセンターをまたぐクラスタを作成することも可能です。
  • Version
    • 「5.0.0」になっていることを確認してください。
  • Scripting
    • 5.0になって、Painless scriptingが利用できます。トライアル期間は「sandboxed」のタイプしか利用できないようです。
  • Plugins
    • 利用するプラグインを選択します。
  • Name
    • クラスタに名前を付けましょう。

他の項目は、デフォルトのままで良いと思います。
必要な項目を入力して、「Create」ボタンを押下すると、クラスタの生成が始まります。

約10秒程度でクラスタが作成され、完了すると、最初にクラスタを操作するための「elastic」ユーザのパスワードが表示されるので、それをメモしておきます。
クラスタが作成されると、以下のような画面が表示されます。

ElasticCloud-CreateCluster2.jpg

ユーザ設定

最初に、左メニューのConfigurationから、Kibanaを「enable」にしておいてください。

次に、左メニューのSecurityを押下します。
「Go to Kibana to make security changes.」のリンクを押下すると、Kibanaのログイン画面が開きます。
ここでは、ユーザ名:elastic、パスワード:クラスタ作成時に表示されたもの を入力します。

そうすると、ユーザ一覧画面が表示されます。

ElasticCloud-user.png

ここで、必要なユーザを登録します。
ここで登録したユーザ情報は、ElasticsearchへのRESTのアクセスでも必要になります。

アクセス確認

クラスタのトップページにある、「Endpoints」のリンクを押下してみます。
すると、認証ダイアログが表示されるので、そこで、登録したユーザのID/パスワードを入力します。

以下のようなJSONの内容がブラウザに表示されたら、接続成功です。

{
  "name" : "instance-0000000000",
  "cluster_name" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "cluster_uuid" : "xxxxxxxxxxxxxxxxxxxxxx",
  "version" : {
    "number" : "5.0.0",
    "build_hash" : "253032b",
    "build_date" : "2016-10-26T05:11:34.737Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.0"
  },
  "tagline" : "You Know, for Search"
}

接続に失敗すると、以下のようなエラーの内容が返ってきます。

{
    "error": {
        "root_cause": [
            {
                "type": "security_exception",
                "reason": "action [cluster:monitor/main] requires authentication",
                "header": {
                    "WWW-Authenticate": "Basic realm=\"security\" charset=\"UTF-8\""
                }
            }
        ],
        "type": "security_exception",
        "reason": "action [cluster:monitor/main] requires authentication",
        "header": {
            "WWW-Authenticate": "Basic realm=\"security\" charset=\"UTF-8\""
        }
    },
    "status": 401
}

インデックスの作成・ドキュメントの登録

早速、インデックスを作成してみます。
ここでは、以下のページの shakespeare のデータを利用してみます。

インデックスの作成

curlコマンドを利用して作成していきますが、セキュリティの設定がされているので、ユーザID/パスワードの指定が必要になる点に注意してください。ここでは、上記で作成したユーザを利用します。

インデックス名は "shakespeare" とします。

$ curl --user takanorig -XPUT "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:9243/shakespeare" -d '
{
 "mappings" : {
  "_default_" : {
   "properties" : {
    "speaker" : {"type": "string", "index" : "not_analyzed" },
    "play_name" : {"type": "string", "index" : "not_analyzed" },
    "line_id" : { "type" : "integer" },
    "speech_number" : { "type" : "integer" }
   }
  }
 }
}
';
Enter host password for user 'takanorig':

ドキュメント登録

上記、Elasticのページから、shakespeare.json をダウンロードし、Bulk APIを利用してデータをインポートします。

$ curl --user takanorig -XPOST 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:9243/shakespeare/_bulk?pretty' --data-binary @shakespeare.json

登録できたかどうか、確認してみます。

$ curl --user takanorig 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:9243/_cat/indices/shakespeare?v'

health status index       uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   shakespeare johqlsUYT4WF0BhuZup_zw   5   1     111396            0       29mb           29mb

"docs.count"111396 となっており、インポートに成功しているようです。

さらに、検索してみます。以下のコマンドで、一覧を取得します(結果は一部だけ返ってきます)。

$ curl --user takanorig -XGET 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:9243/shakespeare/_search'
{
    "took": 10,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 111396,
        "max_score": 1.0,
        "hits": [
            {
                "_index": "shakespeare",
                "_type": "act",
                "_id": "0",
                "_score": 1.0,
                "_source": {
                    "line_id": 1,
                    "play_name": "Henry IV",
                    "speech_number": "",
                    "line_number": "",
                    "speaker": "",
                    "text_entry": "ACT I"
                }
            },
            {
                "_index": "shakespeare",
                "_type": "line",
                "_id": "14",
                "_score": 1.0,
                "_source": {
                    "line_id": 15,
                    "play_name": "Henry IV",
                    "speech_number": 1,
                    "line_number": "1.1.12",
                    "speaker": "KING HENRY IV",
                    "text_entry": "Did lately meet in the intestine shock"
                }
            },
            ・・・
        ]
    }
}

まとめ

環境構築をする必要なく、すぐにElasticの利用を開始できるのは便利ですね。
メモリとストレージのサイズの組み合わせや、冗長化のパターンは、Elastic社が推奨する構成になっています。
Kibanaとの連携はもちろん、Shield、Watcher、Marvelなどの商用のプラグインも利用可能になっており、OSSで構築した場合やAmazon Elasticsearch Serviceには無いメリットですね。

また、試してはいないですが、サイズ/プランの変更は、画面上で設定を変更するだけで可能なようです。
スナップショットも、30分ごとに保存されているようなので、データのバックアップも安心です。

8
8
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
8
8