AWSのAmazon Elasticsearch Serviceを使って簡単にElasticsearch環境を作成してみる

づや


AWSのAmazon Elasticsearch Serviceを使って簡単にElasticsearch環境を作成してみる

こんにちは。エンジニアのづやです。

LIGにもオープンソースの検索エンジンElasticsearchを導入したいなぁと思いまして、AWSの公式サービスがリリースされていたのを思い出しました。そこでAWSのElasticsearch環境を作るところまでとりあえず試してみましたので、その紹介をさせていただきます。

▼目次

  • AWSのコンパネから設定する
    • ドメイン名の入力
    • インタンスの設定
    • ストレージタイプの設定
    • セキュリティポリシーの設定
    • ドメインの確認
  • 接続してみる
  • おわりに

「Elasticsearchとはなんだろう?」という方は公式サイトをご確認ください。

AWSのコンパネから設定する

まずは各種設定を行っていきます。

2-1

ドメイン名の入力

ドメイン名を任意で入力しましょう。
エンドポイントのURLに利用されます。今回は「liginc」にしました。

3-1

インタンスの設定

次は設定がいっぱいあります。
インスタンスタイプとインスタンスの数を選びます。1番小さいt2.microを選択しています。

ストレージタイプの設定

次にストレージのタイプです。
インスタンスストアかEBSが選択できるのですが、t2系だとEBSしか選べないためEBSにしています。

最後のUTC+0を選択しているものはsnapshotを自動で取ってくれる時間です。負荷の少ない時間にするといいよと書いてあります。今回はとりあえずデフォルトで。

4-1

セキュリティポリシーの設定

次はセキュリティポリシーです。S3とかでもあるやつですね。
テンプレートの中からIP制限のものを選択して、今回使用するインスタンスのIPを許可しました。

5

確認画面です。問題なければGOです。

ドメインの確認

指定したドメインで立ち上がります。

6-1

最初はDomain statusがLoadingなのでちょっと待ちます。

7-1

Activeになるとこんな感じです。エンドポイント等が作成されるので、こちらに向かって操作をしていく感じになります。

接続してみる

ではIPで許可したインスタンスから、まずデータをいれてみます。
※コマンドのURLはダミーのものです。

curl -XPUT search-dummy-domain.ap-northeast-1.es.amazonaws.com/testindex/test/1 -d '{
    "title":"testtitle" , 
    "body":"test body"
}'

curl -XPUT search-dummy-domain.ap-northeast-1.es.amazonaws.com/testindex/test/2 -d '{
    "title":"testtitle2" , 
    "body":"test body2"
}'

こんな感じでPUTにてテストデータを投入します。
そして投入したデータに検索をかけてみます。

curl -XGET search-dummy-domain.ap-northeast-1.es.amazonaws.com/testindex/test/_search -d '{
    "query":{
        "match":{
            "title":"testtitle"
         }
     }
}'

こんなふうにtitleが「testtitle」のデータを取得しにいくと↓の結果が

{
    "_shards": {
        "failed": 0, 
        "successful": 5, 
        "total": 5
    }, 
    "hits": {
        "hits": [
            {
                "_id": "1", 
                "_index": "testindex", 
                "_score": 0.30685282, 
                "_source": {
                    "body": "test body", 
                    "title": "testtitle"
                }, 
                "_type": "test"
            }
        ], 
        "max_score": 0.30685282, 
        "total": 1
    }, 
    "timed_out": false, 
    "took": 27
}

_idが1の最初にいれたデータが無事取得できました!!

おわりに

かなり簡単にElasticsearchを利用する環境が作れてしまいますね。
Elasticsearch導入の際は検討してみてもよいのではないでしょうか。

それでは、また。

づや
この記事を書いた人
づや

取締役

2007年入社

この記事を読んだ人におすすめ