Azure Cosmos DB と Azure Search の組み合せでフルテキスト検索を実現しよう

Microsoft Japan Data Platform Tech Sales Team

森本 信次

これまでご紹介してきた Azure Cosmos DB は、 他の Azure サービスと組み合わせることで、よりコスト効果の高い使い方が可能となります。例えば、検索サービスを提供する Azure Search を併せて使うことで、Cosmos DB に対する比較的コストの高い検索リクエスト、例えば属性的なデータを検索するようなフルテキスト検索の一部を Azure Search にロードオフし、システム全体のトータルコストの最適化を図ることが可能となります。

Azure Search の詳細についてはこちらをご覧頂くとして、今回は、実際にサンプルデータを Cosmos DB にロードして、Azure Search を使って Cosmos DB のデータに対するフルテキスト検索機能を追加する手順を Step 1~4 の流れに従ってご紹介して、まずは Azure Search と Azure Cosmos DB の親和性の高さを体感頂ければと思います。

Step 1. サンプルデータの準備 および Cosmos DB へデータをロード
以下のような架空の customer データ を Azure Cosmos DB: データ移行ツールを使って Cosmos DB へロードします。
適宜こちらから ZIP 形式の CSV ファイルをダウンロードして使用頂ければと思います。
dummy_customers
この例では “Customers” コレクション にデータをロードしています。
Import_05

Step 2. フルテキスト検索機能を提供する Azure Search サービスを作成
Azure Portal から サンプルデータをロードした Cosmos DB アカウントを開き、[Azure Search の追加] メニューを選択します。
AddAzureSearch
Search サービスを選択します。
AzureSearch_01
新しく Search サービスを作成します。
AzureSearch_02 AzureSearch_03
Search サービスが作成されました、インデックスはこの後のステップで作成していきます。
AzureSearch_04 Step 3. サンプルデータをデータソースとしてAzure Search にインデックスを追加 Azure Portal から 再度 Cosmos DB アカウントを開き、[Azure Search の追加] メニューを選択します。Step 2で作成した Search サービス を選択した後、Step 1でサンプルデータをロードしておいた CosmosDB の データベースとコレクションを選択します。 AzureSearch_05
作成するインデックス名を指定、検索対象のフィールドを指定します。以下の例ではすべてのフィールドをフルテキスト検索の対象としています。 AzureSearch_08
Azure Search のインデックス構築の詳細についてははこちらをご参照ください。

Step 4. Azure Search の 検索エクスプローラーから全文検索機能を使用Azure Portal から 検索エクスプローラーを使用して全文検索を行う
以下は 一例として、住所に”横浜市”を含み干支が””の customer を検索しています。 AzureSearch_17

最後に
いかがだったでしょうか? ご覧いただいたように、Cosmos DB と Azure Search は非常に親和性か高く、Azure Search を使えば Cosmos DB 内のデータのフルテキスト検索機能を簡単に提供できるようになります、実際のお客様事例においても Cosmos DB と Azure Search をセットでお使い頂いているケースが多く見受けられていますので、こちらに公開されている Azure Search のサンプルアプリもお試し頂ければと思います。