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"
      }
  ]
}

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

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

    処理中...