cUrlコマンドで始める簡単Azure Search

cUrlはUNIX/Linux系では有名なURLを使ったデータ送受信コマンドで手軽にREST系処理を実行するときにとても重宝している。そんなcUrlコマンドを使ってAzure Searchをお手軽に使ってみようというお話。

はじめに

まだの人はAzureポータルよりAzure Searchサービスを作成してください。「ポータルでの Azure Search サービスの作成」に優しく手順が書かれているのでご参考に。料金プランは無料と標準プランがあるがテストであれば無料プランで十分。まずはAPIキーまで取得ください。API実行のためにはAPIキーが必要。

cURLでSearch Service REST APIを実行

Search Service REST APIの中からいくつか代表的なAPIをピックアップしてcUrlでクエリを組み立ててみる。ここではインデックス新規作成、そこにいくつかドキュメントを追加、そしてドキュメントを検索する・・といった基本的なシナリオを実行する。ポイントとしてはcUrlの-Hオプションでヘッダ定義、-XオプションでHTTPメソッド指定、-dオプションでリクエストボディを指定する・・・といったところ。尚、下記サンプルでは現時点(2015-06-05)で最新のAPIバージョン2015-02-28-Previewを使用している。

1. インデックス新規作成

articlesという名前のブログ記事を格納するためのインデックスを作成する。インデックス生成にはCreate Index (Azure Search Service REST API)を利用する。

2. ドキュメントの追加

1で作成したインデックスにいくつかドキュメントをアップロードしてみる。データソースはMicrosoft Azure Japan BlogRSS。インデックスへのドキュメントのアップロードAPIはAdd, Update or Delete Documents (Azure Search Service REST APを参照ください。

3. ドキュメントの検索

追加されたドキュメントを実際に検索してみる。下記サンプルは”DocumentDB”キーワードで検索をして上位5つの結果を取得、レスポンスフィールドとしてitemidとtitleフィールドを指定している。ドキュメントの検索APIはSearch Documents (Azure Search Service REST API)を参照ください。

ただし上記の実行結果は次のように日本語マルチバイト文字がすべて”\uHHHH”のようなユニコードの16進表現でエンコードされている。さらに1行レスポンスであるため結果のJSON構造が非常に分かりづらく可読性のない状況となっている。

{"@odata.context":"https://yoichikaecdemo0.search.windows.net/indexes('articles')/$metadata#docs(itemid,title)","@odata.count":2,"value":[{"@search.score":1.1298637,"itemid":"1","title":"DocumentDB \u306e\u65b0\u3057\u3044\u30a4\u30f3\u30dd\u30fc\u30c8 \u30aa\u30d7\u30b7\u30e7\u30f3"},{"@search.score":1.058217,"itemid":"4","title":"DocumentDB SDK \u3067\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u5206\u5272\u3092\u30b5\u30dd\u30fc\u30c8"}]}

そこで上記の結果出力に対して(1)JSONを見やすくPretifyして、(2)16進数表現でエンコードされたUnicodeをデコードする2つの処理を加えたい。まずは(1)JSON Pretifyだが、Python2.6以上の環境であればで「python -mjson.tool」コマンドでJSONをPretify出力することができる。次に(2)16進数表現のデコードはStackOverflowで見つけたワンライナー「perl -Xpne ‘s/\\u([0-9a-fA-F]{4})/chr(hex($1))/eg’」を使用する。先のcUrlコマンドにこの2つの処理をパイプでつなげて加えてみたのが下記コード。

以下の実行結果のとおり無事JSON Pretify+デコードされた出力となった。

{
    "@odata.context": "https://yoichikaecdemo0.search.windows.net/indexes('articles')/$metadata#docs(itemid,title)",
    "@odata.count": 2,
    "value": [
        {
            "@search.score": 1.1298637,
            "itemid": "1",
            "title": "DocumentDB の新しいインポート オプション"
        },
        {
            "@search.score": 1.058217,
            "itemid": "4",
            "title": "DocumentDB SDK でパーティション分割をサポート"
        }
    ]
}

REST UIツール

今回cUrlコマンドでのお手軽にAPI実行を紹介したがREST系処理の実行ということであればFiddlerやPostmanのようなツールのほうがエンコード・デコード、JSON/XMLの整形表示など面倒な処理を自動でやってくれる分楽だったりする。特にPostmanはおすすめ。

108 comments

  1. Pingback: 먹튀신고
  2. Pingback: ppc testimonials
  3. Pingback: green coffee
  4. Pingback: Escorts In Pune
  5. Pingback: Aufnäher
  6. Pingback: warehouse for sale
  7. Pingback: 网站111
  8. Pingback: mujer plumas
  9. Pingback: Affordable SEO
  10. Pingback: writeessay
  11. Pingback: Viagra from canada
  12. Pingback: Snow algae
  13. Pingback: writeessay
  14. Pingback: Cialis prices
  15. Pingback: Viagra 20mg
  16. Pingback: Cheap cialis
  17. Pingback: Buy cialis
  18. Pingback: Cialis from canada
  19. Pingback: Viagra cost
  20. Pingback: Cialis cost
  21. Pingback: colarts.uodiyala
  22. Pingback: this web page
  23. Pingback: page11
  24. Pingback: Cialis 20mg
  25. Pingback: click here
  26. Pingback: click to continue
  27. Pingback: provided link
  28. Pingback: taken from here
  29. Pingback: click here
  30. Pingback: Cialis 5 mg
  31. Pingback: Cialis generic
  32. Pingback: writeessay
  33. Pingback: Cialis coupon
  34. Pingback: Cialis online
  35. Pingback: Kolkata Escorts
  36. Pingback: click at this page
  37. Pingback: notehub.org click
  38. Pingback: notehub.org
  39. Pingback: notehub.org
  40. Pingback: notehub.org
  41. Pingback: click to read more
  42. Pingback: on this page
  43. Pingback: notehub.org
  44. Pingback: notehub.org
  45. Pingback: see more
  46. Pingback: notehub.org
  47. Pingback: notehub.org
  48. lasix and viagra cialis generic pronounce
    cheap cialis
    generic cialis vs brand cialis
    =http://cialissknrx.com/#”>buy cheap cialis online

Leave a Reply

Your email address will not be published. Required fields are marked *