こんにちは!
OpenSearchサーバーレスを使う際には、デメリットもあることを知っておく必要があります。本記事では、OpenSearchサーバーレスを使う前に知っておきたいデメリットについて解説します。
OpenSearchサーバーレスは、サーバーレスアーキテクチャを使用して、AWS上で検索エンジンを構築するためのサービスです。OpenSearchサーバーレスを使うことで、検索エンジンを構築する際に必要なインフラストラクチャの構築や管理を行う必要がなくなり、検索エンジン構築を容易に行うことができます。
しかし、OpenSearchサーバーレスを使う際には、デメリットもあることを知っておく必要があります。本記事では、OpenSearchサーバーレスを使う前に知っておきたいデメリットについて解説します。
OpenSearchサーバーレスを使う際には、以下のようなデメリットがあります。
OpenSearchサーバーレスを使う際には、インデックスを作成する必要があります。インデックスの作成には、検索対象のデータを収集し、そしてインデックス作成するための時間がかかります。
そのため検索対象のデータ発生に対し、リアルタイムな検索を実現することは難しいです。リアルタイム性の要件を考慮して使用する必要があります。
デフォルトで日本語のアナライザーが用意されていますが、用途次第では検索精度の低さを感じます。そのため、例えば不動産業界、建築業界など用途が限定的であれば、辞書情報などはチューニングするなどして、検索精度を向上させる必要があります。
DynamoDBのStreamと連携してインデックス生成する場合などに、検索対象のアイテムをすべてインデックス登録するとボリュームが大きくなり、検索速度の低下や、最悪の場合サーバーが停止します。検索要件に応じて、最小限の情報でインデックス設計を行う必要があります。
インデックスを更新する際には、インデックスを再作成する必要があります。このため、インデックスを更新する際には、作成と比較して時間がかかる可能性があります。
OpenSearchサーバーレスを使う際には、インデックスを作成する必要があります。以下のサンプルプログラムは、OpenSearchサーバーレスを使ってインデックスを作成する方法を示したものです。
以下はOpenSearchサーバーレスを使ってドキュメントを検索する例です。検索のクエリーの箇所はOpenSearchの仕様に合わせて適切にカスタムしましょう。
const AWS = require('aws-sdk');
const opensearchdomain = new AWS.OpenSearchDomain({ endpoint: 'your-opensearch-endpoint' });
async function searchOpenSearch(query) {
try {
const searchResult = await opensearchdomain.search({
query: query,
size: 10 // 検索結果の最大数
}).promise();
return searchResult.hits.hits;
} catch (error) {
console.log(error);
throw new Error('An error occurred while searching OpenSearch');
}
}
以下はOpenSearchサーバーレスを使ってインデックスを作成する例です。Kibanaのコンソールでも同様の事が可能です。
// インポート
const AWS = require('aws-sdk');
// OpenSearchサーバーレスのクライアントを作成
const client = new AWS.OpenSearch({
apiVersion: '2020-07-01'
});
// インデックスを作成する
const createIndex = async () => {
const params = {
DomainName: 'my-domain',
IndexName: 'my-index',
IndexSchema: {
Fields: [
{
Name: 'title',
Type: 'text'
},
{
Name: 'content',
Type: 'text'
}
]
}
};
const response = await client.createIndex(params).promise();
console.log(response);
};
createIndex();
上記のサンプルプログラムを実行すると、OpenSearchサーバーレスを使ってインデックスを作成することができます。
本記事では、OpenSearchサーバーレスを使う前に知っておきたいデメリットについて紹介しました。OpenSearchを使う際には、事前に要件フィットするかどうかを検討の上使用しましょう。
サーバーレス開発、低コストなAWS開発内製化はお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎