Azure Search (Azureの検索プラットフォームサービス)のチュートリアル

Configure Search in the Azure Preview portalを意訳した投稿です。

価格体系

始める前に価格体系を確認しておきましょう。
価格体系は、[Azure Search PREVIEW Pricing Details]で説明されています。

Azure Searchは、[Search units]の組み合わせで販売されます。
秒間クエリ(queries-per-second/QPS)ベンチマークとドキュメントカウント(インデックスストレージ)ベンチマークによって、Unitが定義されます。

もっとQPSを増やしたい、もっとドキュメント数を増やしたい、もしくはその両方をしたい場合、Unitを増やすことになります。Unitを増やすことで、高可容性と性能を得られます。36スタンダードUnitオファーよりも性能が必要な場合は、[azuresearch_contact@microsoft.com]に連絡をする必要があります。

現在、プレビュー中なので、50%のプレビューディスカウント価格で提供されます。

  Free スタンダード
ストレージ 50MB 25GB/unit
秒間クエリ数 N/A 15/Unit
ドキュメント数 10,000ドキュメント
3インデックス
15,000,000/unit
50インデックス
スケールアウト制限 N/A 最大36nit
Unitあたりの時間単価 無料 17.14円/時間
データ転送 通常の転送料 通常の転送料

Azure Searchのチュートリアル

Azure PrevieポータルでAzure Searchの設定

Microsoft Azure Search(Public Preview)は新しいPreview Portalで提供されています。

学習目的や簡易テスト、小さな検索プロジェクト開発の為に使用できるマルチテナントの共有型の無償サービスが提供されています。

1.Azure Preview ポータルにアクセスします。

2.ページの下部にある[New]ボタンをクリックします。

 

3.ページ上部の[Everything]をクリックします。

 

4.ギャラリーから、[Data, storage, cache, + backup]をクリックします。

 

5.全てのデータ関連サービスを一覧表示するために、[See All]をクリックします。

 

6.Data Servicesから、Searchをクリックします。

7.Searchページの下部で、CREATEをクリックします。

8.サービスURLに私用するサービス名を小文字で入力します。ダッシュ、スペースを避けて、15文字以内の文字を入力します。

9.[Pricing Tier]をクリックし、価格オプションを選択します。FREEを選択肢、ページ下部のSELECTをクリックします。

10.Resource Groupをクリックし、既存のグループか新しいグループを選択します。

11.複数のサブスクリプションを持っていて、別のサブスクリプションでAzure Searchで使用したい場合は、Subscriptionをクリックし、選択します。

12.データセンターリージョンを選択するためにLocationを選択します。プレビュー中は、West US、East US、North Europe、Southeast Asiaから選択できます。複数のデータセンターをまたがってリソースを分散させることは、Public Preview中には設定が提供されていません。

URLとAPIキーの確認

数分で、サービスが作成されます。サービスに接続するには、URLとAPIキーが必要です。

1.Browser – Everything – Data, storage, cache, + backup – S Everything – Data, storage, cache, + backup – See All – Search Servicesの順にクリックし、Searchサービスのダッシュボードを開きます。

 

2.サービスダッシュボード上で、PROPERTIESとKEYSを見ます。

PROPERTIESには、サービスURLが記載されています。

KEYSには、ユーザー人商用のAPIキーが記載されています。

USAGEでは、ドキュメント数、提供リソース、ストレージ制限が記載されています。

動作確認

Search設定の最後に、クライアントアプリケーションからサービスにアクセスできるかを確認します。このテストには、Fiddlerを使用します。

インデックスの作成

1.Fiddlerを起動します。Fileメニューで、Capture Trafficをオフにします。Composerタブで、次のようにリクエストを記述します。

2.PUTを選択します。

3.Propertiesページに記載されているサービスURLをURLに指定します。

  • HTTPSプレフィックスを使用します
  • /indexes/hotels属性にリクエストします。これは、インデックス名[hotel]をSearchに作成します。
  • APIバージョンは小文字で、[?api-version=2014-07-31-preview"]と指定します。

(例)https://my-app.search.windows.net/indexes/hotels?api-version=2014-07-31-Preview

4.リクエストヘッダーを指定します。APIキーは自分のものに書き換えてください。

User-Agent: Fiddler
host: my-app.search.windows.net
content-type: application/json
api-key: 1111222233334444

5.リクエストボディーで、インデックス定義をします。

{
"name": "hotels",  
"fields": [
  {"name": "hotelId", "type": "Edm.String", "key":true, "searchable": false},
  {"name": "baseRate", "type": "Edm.Double"},
  {"name": "description", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "suggestions": true},
  {"name": "hotelName", "type": "Edm.String", "suggestions": true},
  {"name": "category", "type": "Edm.String"},
  {"name": "tags", "type": "Collection(Edm.String)"},
  {"name": "parkingIncluded", "type": "Edm.Boolean"},
  {"name": "smokingAllowed", "type": "Edm.Boolean"},
  {"name": "lastRenovationDate", "type": "Edm.DateTimeOffset"},
  {"name": "rating", "type": "Edm.Int32"},
  {"name": "location", "type": "Edm.GeographyPoint"}
 ] 
}

6.Executeをクリックします。

数秒で、HTTP 204レスポンスをセッション一覧で受け取ります。インデックスが作成されます。HTTP 504を受け取った場合は、HTTPSURLが間違っています。もしHTTP404の場合は、構文を確認してください。HTTP 400は、APIキーに問題があることを示しています。

ドキュメントの読み込み

Composerタブで、次のようにドキュメントをポストします。Bodyには4つのホテルの情報を記載しています。

1.POSTを選択します

2.HTTPSで次のようにURLを指定します。[/indexws/<index名>/docs/ndex?api-version=2014-07-31-preview]

(例)https://my-app.search.windows.net/indexes/hotels/docs/index?api-version=2014-07-31-Preview

3.リクエストヘッダーは前の手順と同じものを指定します。

User-Agent: Fiddler
host: my-app.search.windows.net
content-type: application/json
api-key: 1111222233334444

4.リクエストBodyには、ホテルインデックスに追加する4つのドキュメントが含まれています。

{
"value": [
{
    "@search.action": "upload",
    "hotelId": "1",
    "baseRate": 199.0,
    "description": "Best hotel in town",
    "hotelName": "Fancy Stay",
    "category": "Luxury",
    "tags": ["pool", "view", "wifi", "concierge"],
    "parkingIncluded": false,
    "smokingAllowed": false,
    "lastRenovationDate": "2010-06-27T00:00:00Z",
    "rating": 5,
    "location": { "type": "Point", "coordinates": [-122.131577, 47.678581] }
  },
  {
    "@search.action": "upload",
    "hotelId": "2",
    "baseRate": 79.99,
    "description": "Cheapest hotel in town",
    "hotelName": "Roach Motel",
    "category": "Budget",
    "tags": ["motel", "budget"],
    "parkingIncluded": true,
    "smokingAllowed": true,
    "lastRenovationDate": "1982-04-28T00:00:00Z",
    "rating": 1,
    "location": { "type": "Point", "coordinates": [-122.131577, 49.678581] }
  },
  {
    "@search.action": "upload",
    "hotelId": "3",
    "baseRate": 279.99,
    "description": "Surprisingly expensive",
    "hotelName": "Dew Drop Inn",
    "category": "Bed and Breakfast",
    "tags": ["charming", "quaint"],
    "parkingIncluded": true,
    "smokingAllowed": false,
    "lastRenovationDate": null,
    "rating": 4,
    "location": { "type": "Point", "coordinates": [-122.33207, 47.60621] }
  },
  {
    "@search.action": "upload",
    "hotelId": "4",
    "baseRate": 220.00,
    "description": "This could be the one",
    "hotelName": "A Hotel for Everyone",
    "category": "Basic hotel",
    "tags": ["pool", "wifi"],
    "parkingIncluded": true,
    "smokingAllowed": false,
    "lastRenovationDate": null,
    "rating": 4,
    "location": { "type": "Point", "coordinates": [-122.12151, 47.67399] }
  }
 ]
}

5.Executeをクリックします。

HTTP200レスポンスを数秒で受け取ります。その場合、ドキュメントの作成は成功です。207を取得した場合は、1つ以上のドキュメントのアップロードに失敗しています。404の場合は、ヘッダーやBodyを確認してください。

インデックスへのクエリ発行

インデックスとドキュメントの取り込みが完了しました。Composterタブで、GETコマンドを実行します。

1.GETを選択します。

2.URLに次のようなURLを指定します。

(例)https://my-app.search.windows.net/indexes/hotels/docs?search=motel&facet=category&facet=rating,values:1|2|3|4|5&api-version=2014-07-31-Preview

この検索クエリは、motelという単語とレーティングを指定しています。

3.リクエストヘッダーは前のものと同じものを使用します。

User-Agent: Fiddler
host: my-app.search.windows.net
content-type: application/json
api-key: 1111222233334444

レスポンスコードは、200いなるはずです。

クエリについては、http://msdn.microsoft.com/en-us/library/dn798927.aspxを参照してください。クエリにスペースが含まれる例が多いですが、Fiddlerでは許可されていません。スペースを+に置換してください。

オリジナル

GET /indexes/hotels/docs?search=*&$orderby=lastRenovationDate desc&api-version=2014-07-31-Preview

+に変更

GET /indexes/hotels/docs?search=*&$orderby=lastRenovationDate+desc&api-version=2014-07-31-Preview