プロジェクト

全般

プロフィール

第7回:OpenSearch Serviceを触ってみる

(2022/3/9 19:00開催)

OpenSearch Service

旧名は「Elasticsearch Service」で、去年(2021)9月頃にブランド名が変更されました。
※データ分析カテゴリではよく名前が出てくる主要なサービスの一つですが、AWSの認定試験ではあまり出てくることはないかと思われます。

OpenSearchへのデータ投入方法はいろいろあります。
(だだしこの仕組を作るのはなかなか大変なので今回の勉強会では他サービスと連携させたデータ登録は実施しません)

参考:Amazon OpenSearch Service のデータ取り込み

OpenSearch(Elasticsearch)は全文検索エンジンとして利用可能で、WebアプリケーションであるOpenSearch Dashbord(Kibana)で検索結果を表示したりダッシュボードを作成して集計結果をグラフィカルに表示したりすることができます。
OpenSearchを使って全部検索やダッシュボード作成などを行う場合は、OpenSearch自身の内部データベースにデータを登録する必要があります。

OpenSearchのサービスとしての分類は、分析系のカテゴリに属します。
余談ですが、分析系のサービスとして他によく名前を見るのは、PostgreSQL互換のDWH(データウェアハウス)のサービスであるRedshift、ETL処理のサービスであるGlue、S3バケット上のファイル群をデータソースに標準SQLでクエリを実行できるAthena、コストパフォーマンスに優れるBIツールであるQuickSightなどがあります。
最近のDXの波で、データ分析関連のサービスやスキルセットの需要が高まっているように個人的には感じています。

参考:弊社のデータレイク物語:Woot.comはどのようにしてAWS上でサーバーレスデータレイクを構築したか
参考:Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤

OpenSearch Serviceにも12ヶ月限定の無料枠があるので、最小のインスタンスなら無料で利用可能です(12ヶ月の無料枠が残っている場合)。


ハンズオン

全体の流れ

  • OpenSearchドメインの作成
  • OpenSearch Dashbordへのアクセス
  • サンプルデータのロード
  • DevToolsからのIndexの作成とデータ登録
  • Discoverからの検索
  • リソース削除

OpenSearchドメインの作成

※ 今回は簡単さを重視した手順になっています。

AWSコンソールからOpenSearchの画面を開きます。

  • ドメイン名:study2-domain、デプロイタイプ:開発およびテスト
  • インスタンスタイプ:t3.small.search ※ここを間違えると課金対象になってしまうのでご注意を
  • ネットワーク:パブリックアクセス
  • きめ細かなアクセスコントロールを有効化: ON
    • マスターユーザーを作成
    • マスターユーザー名とパスワードに任意のユーザー名を設定(今回はユーザー名を"study2"とします。パスワードは任意で)
  • ドメインアクセスポリシー: きめ細かなアクセスコントロールのみを使用

OpenSearch Dashbordへのアクセス

「OpenSearch Dashboards」はElasticsearchのKibanaが、OpenSearchとなって名前が変わったものです。
OpenSearch Serviceに組み込まれており、追加料金なしで利用できるクライアントWebアプリケーションです。

ドメインが作成されたら「OpenSearch Dashboards の URL」のリンクをクリックで画面が開きます。
ドメイン作成時に入力した内部データベースのユーザーID/パスワードでログインできます。

サンプルデータのロード

※ここからはOpenSearch Dashboards上で作業します

まずはサンプルのデータをロードしてみます。
左側のメニューから HOME > Add Data > 適当なサンプルデータを選択("Sample eCommerce orders"など)

(サンプルデータの表示を試してみる)

DevToolsからのIndexの作成とデータ登録

自分でIndexとデータを登録してみます。

左側のリンクからDev Toolsを選択。
左枠に下記を入力して実行

PUT study2-test-2
{
  "settings": {
    "analysis": {
      "tokenizer": {
        "kuromoji": {
          "type": "kuromoji_tokenizer"
        }
      },
      "analyzer": {
        "kuromoji_analyzer": {
          "type": "custom",
          "tokenizer": "kuromoji"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "category": {
        "type": "keyword"
      },
      "timestamp": {
        "type": "date"
      },
      "test_url": {
        "type": "keyword"
      },
      "content": {
        "type": "text",
        "analyzer": "kuromoji_analyzer"
      }
    }
  }
}

↑で"study2-test"というIndexが作成されるので、今度はデータを登録してみます。

POST study2-test/_doc/
{
  "category": "テスト1",
  "timestamp": "2022-03-09T19:00:00+09:00",
  "test_url": "https://redmine.apps.kinocoffeeblack.net/",
  "content": "AWS勉強会 サンプルです"
}

↑をベースに値を変えて何件か登録してみてもいいです。

Indexパターンの作成

Discoverから検索できるようにするためにIndexパターンの作成が必要です。
左側のリンクからStack Managementを選択。

"study2-test"という名前のIndexパターンを作成します。
Time fieldには"timestamp"項目を選択します。

Discoverからの検索

左側のリンクからDiscoverを選択。
(口頭で)

リソース削除

  • OpenSearchドメインの削除