OpenSearch(Elasticsearch) 全文検索エンジン †
Elasticsearch開発元がライセンス変更したので、AWSがforkしてOpenSearchになった。
- コスト
- 検証/開発用: t3.small.search 1台から
- 本番、可用性を上げる場合: マスターノード最低3台(t3.small.search)、データノード最大2台(m5.large.search)となるので、結構高い
- RI
- t2のRIは無い。
- t3.medium.elasticsearch。それ以下は無い
ログの有効化 †
- 有効にするとCloudWatch Logsに記録される
- 作成されたCloudWatch Logsに保持期間を設定した方が良い。ログが増えるとコストも増えるため。
- ログ有効後、無効化するとクラスターの再作成が実行された。データは保持されるが、30分程度設定が変更できなくなる。
エラーログの有効化:
- OpenSearchの設定から、ログ発行を有効にする
- 再度失敗するリクエストを送信
- 数分待つと、ロググループ「/aws/OpenSearchService/domains/<domain>/application-logs」に新しいログイベントが記録される
- 保持期間が未設定なので、1日等設定する。
トラブルシューティング †
Failed to fetch †
- ストレージサイズを増やした場合、クラスター新規構築 -> データコピーをしているようだ。
- その後、AWS console上で「API Error: Failed to fetch」が表示される部分があった
Serverless †
- 料金: 最低$700/month程度(ストレージ除く)。ec2版は検証/開発用には1台から利用できるので安い。
- 大規模になるほど、運用が楽になるメリットはあるか。
記事:
index template: data type型等を変更 †
- opensearch APIを直接操作する場合、index templateが設定してあれば良い
- dashbordから検索する場合は、dashbord上でindex patternの設定が別に必要
- 例: text型をinteger型に変更したい。(dashbordだと、string, numberと表記される)
- 新規indexは index templateを設定する
firehoseからOpensearchへ送信 †
- OpenSearch_2.3
- 2022-11: firehose作成時に未サポートのエラーが出る「unsupported version: OpenSearch_2.3」
- OpenSearch_1.3
- 2022-11: firehoseから転送できる。
別アカウントからの送信/クロスアカウント/マルチアカウント †
- domain_arnとcluster_endpointは排他。
- OpenSearchサービス先へのクロスアカウント間の配信
- domain_arn: firehoseとOpenSearchが同AWSアカウントの場合。IAM role arnを指定する。
- cluster_endpoint: firehoseとOpenSearchが別のAWSアカウントの場合。OpenSearch endpointを指定。
- AWS console上では、domain_arnを使って同一アカウントのみしか設定できない。 APIやawscli等を使うとcluster_endpointを指定できる。
記事:
インデックスのサイズ縮小 †
- デフォルトの圧縮形式: LZ4. 「best_compression形式(DEFLATE)」を指定する事で、小さくなる。既存のindexは新規追加分から適用される。全て変換したい場合は「_forcemerge」を使うようだ。
記事:
ISM(Index State Management): インデックスの自動管理 †
記事: