こんにちは。エンジニアのづやです。
LIGにもオープンソースの検索エンジンElasticsearchを導入したいなぁと思いまして、AWSの公式サービスがリリースされていたのを思い出しました。そこでAWSのElasticsearch環境を作るところまでとりあえず試してみましたので、その紹介をさせていただきます。
「Elasticsearchとはなんだろう?」という方は公式サイトをご確認ください。
AWSのコンパネから設定する
まずは各種設定を行っていきます。
ドメイン名の入力
ドメイン名を任意で入力しましょう。
エンドポイントのURLに利用されます。今回は「liginc」にしました。
インタンスの設定
次は設定がいっぱいあります。
インスタンスタイプとインスタンスの数を選びます。1番小さいt2.microを選択しています。
ストレージタイプの設定
次にストレージのタイプです。
インスタンスストアかEBSが選択できるのですが、t2系だとEBSしか選べないためEBSにしています。
最後のUTC+0を選択しているものはsnapshotを自動で取ってくれる時間です。負荷の少ない時間にするといいよと書いてあります。今回はとりあえずデフォルトで。
セキュリティポリシーの設定
次はセキュリティポリシーです。S3とかでもあるやつですね。
テンプレートの中からIP制限のものを選択して、今回使用するインスタンスのIPを許可しました。
確認画面です。問題なければGOです。
ドメインの確認
指定したドメインで立ち上がります。
最初はDomain statusがLoadingなのでちょっと待ちます。
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導入の際は検討してみてもよいのではないでしょうか。それでは、また。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。