Cloud Search APIリファレンスに移動する >>
Cloud Search説明書に移動する >>

INDEXER

Summary

  • インデックス/削除/アップデートリクエストの方法を説明します。
  • インデックス/削除/アップデートはREST APIを利用して実行できます。
  • 基本的にinsert/upsertリクエストは、現在文書が存在しなかったり文書が変更されたり、辞典の変更でインデックスが変更された場合にインデックスがリクエストされます。
  • update_timeを明示した場合は、現在ある文書のupdate_timeと同じか、より最新の場合のみ実際の変更が承認されます。
  • リクエストはUTF-8を使用します。

REST API

  • リクエストはPOSTメソッドを使用します。
  • 一回のリクエストで、下記に定義されたinsert/upsert/update/deleteを一度にリクエストできます。
  • リクエストは順次処理されます。 (内部でprimary keyが混ざらないように並行処理)
  • APIを使用する際、文書sizeには制限がありません。

JSONリクエストBody

パラメータ

キー 必須有無 使用可能値 説明
type 必須 insert, upsert, update, delete リクエストがどのようなタイプか定義
update_time 選択。
省略の際は現在時間を使用。
yymmddHHMMSS.ssssss(例:170807133300.000000) 文書が変更された時間をリクエストに明示することを推奨
force 選択。
省略の際はfalse。
bool 既にインデックスされた文書との変更およびupdate_timeと比較せず、必ずリクエストを処理
force_hash 選択。
省略の際はfalse。
bool 既にインデックスされた文書との変更は無視し、update_timeのみ比較して、既存の文書に比べてupdate_timeが同じか、より最新の場合にリクエストを処理
key update、deleteでは必須。
insert、upsertでは省略の際、contentのKEY値を使用。
string 文章のprimary key
content insert、upsert、updateでは必須。
deleteでは使用しない。
map[string]string リクエストで使用するcontentを定義

例でprimary keyはKEYセクションであり、KEYが1のリクエストは順次処理され、KEYが1のリクエストと2のリクエストは互いに関連性がないため、内部で並列処理されます。

一つのリクエストにinsert/upsert/delete/updateリクエストをまとめて送ることができ、リクエストJSONのrequests[x].contentのkey、valueペアはすべて文字列で構成されます。 (検索エンジンで数字型で使用する場合、内部で文字列から数字型に変換されます。)

{
   "requests" : [
      {
         "type" : "insert",
         "key" : "1",
         "content" :
          {
            "KEY": "1",
            "URL": "http://naver.com/bbs/abc.php?bo_table=QnA&wr_id=321651",
            "ROOT_ID": "732303375144529937",
            "TITLE": "JSONJSONJSONJSONJSONJSONJSONJSONテスト中です。",
            "DATE": "2012-01-01T00:00:00+0900",
            "BODY_TEXT": "JSONJSONJSONJSONJSONJSONJSONJSON"
          }
      },
      {
         "type" : "update",
         "key" : "2",
         "content" :
          {
            "ROOT_ID": "223",
            "DATE": "2017-01-01T00:00:00+0900"
          }
      },
      {
         "type" : "delete",
         "key" : "3"
      }
  ]
}

JSONレスポンスBody

パラメータ

キー データタイプ 説明
update_time string(yymmddHHMMSS.ssssss
例:170807133300.000000)
indexerが返すupdate_time値
total_document_count number リクエスト内に含まれている個別リクエスト数
status.code number 0:成功
-1:失敗
status.message string 失敗の際のエラーメッセージ

{
  "update_time" : "170807133300.000000",
  "status" : {
      "code" : 0,
      "message" : ""
  },
  "total_document_count" : 100
}

{
  "update_time": "",
  "status": {
    "code": -1,
    "message": "not found content in request[0]"
  },
  "total_document_count": 0
}

insertリクエスト

文書が存在すると、文書が変更された場合にインデックスをリクエストします。 文書が存在しないと、インデックスをリクエストします。 辞典の変更によって形態素分析が変わったり、term/document weightが変更された時も文書が変更されたと判断されます。

インデックスリクエストの際に定義された全体文書をcontentに提供するのが原則ですが、primary keyに定義されたkeyを除き、省略の際は空の文字列が使用されます。

primary keyに定義されたsectionはcontent内に含まれていなければなりません。

{
   "requests" : [
      {
         "type" : "insert",
         "key": "1",
         "content" :
          {
            "URL": "http://naver.com/bbs/abc.php?bo_table=QnA&wr_id=321651",
            "KEY": "1",
            "ROOT_ID": "732303375144529937",
            "TITLE": "JSONJSONJSONJSONJSONJSONJSONJSONテスト中です。",
            "DATE": "2012-01-01T00:00:00+0900",
            "BODY_TEXT": "JSONJSONJSONJSONJSONJSONJSONJSON"
          }
      }
  ]
}

upsertリクエスト

リクエストした文書が既に存在している場合は、存在する文書とリクエスト文書がmergeされた後にinsertと同様に動作します。 リクエストした文書が新しい文書の場合は、そのままインデックスされます。

primary keyは別途のkeyに設定するか、content内に必ず含まれていなければなりません。

{
   "requests" : [
      {
         "type" : "upsert",
         "key" : "1",
         "content" :
          {
            "URL": "http://naver.com/bbs/abc.php?bo_table=QnA&wr_id=321651",
            "KEY": "1",
            "ROOT_ID": "732303375144529937",
            "TITLE": "JSONJSONJSONJSONJSONJSONJSONJSONテスト中です。",
            "DATE": "2012-01-01T00:00:00+0900",
            "BODY_TEXT": "JSONJSONJSONJSONJSONJSONJSONJSON"
          }
      }
  ]
}

updateリクエスト

現在存在する文書を一部アップデートします。 リクエストした文書が現在存在しない場合は何も起こりません。

{
   "requests" : [
      {
         "type" : "update",
         "key" : "2",
         "content" :
          {
            "ROOT_ID": "223",
            "DATE": "2017-01-01T00:00:00+0900"
          }
      }
  ]
}

deleteリクエスト

リクエストした文書を削除します。 リクエストした文書が存在しない場合は何も起こりません。

{
   "requests" : [
      {
         "type" : "delete",
         "key" : "2"
      }
  ]
}

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...