Document 管理
    • PDF

    Document 管理

    • PDF

    記事の要約

    文書の insert(インデックス)、update、upsert、deleteリクエストを実行します。すべてのリクエストは POSTメソッドを使用し、そのリクエストを実行する前に Domainが作成されている必要があります。

    • 基本的に insert/upsertリクエストは、既存の文書が存在しないか、文書や辞書が変更されてインデックスが変更された場合にインデックスリクエストになります。
    • update timeを指定した場合は、既存の文書の update timeと同じか、最新の場合のみ実際の変更が承認されます。
    • リクエストは utf-8を使用します。
    • 1回のリクエストで insert/upsert/update/deleteを同時にリクエストできます。
    • リクエストは順次処理されます(内部で primary keyが混ざらないように並列処理)。
    • 一度にアップロード可能な文書は1000件/5MBで、大容量のアップロードは Object Storage Document管理を通じて実行できます。
    • 自動補完機能を使用している場合は、本リクエスト後に自動補完設定と修正リクエストを行い、自動補完インデックスを更新する必要があります。
    POST https://cloudsearch.apigw.ntruss.com/CloudSearch/real/v1/domain/{name}/document/manage
    

    リクエスト

    リクエストパラメータ

    パラメータ名必須有無タイプ制限事項説明
    nameYesstring作成されている Domain名

    リクエストボディ

    フィールド名必須有無タイプ制限事項説明
    requests[]YesArray文書リクエストリスト
    requests[].typeYesstringinsert、upsert、update、deleteのいずれかを選択リクエストタイプの定義
    requests[].update_timeNostringyymmddHHMMSS.ssssss
    例: 170807133300.000000
    文書が変更された時間をリクエストに明記することを推奨
    requests[].forceNobooltrue, falseインデックスされた文書との変更や update_timeと比較せずに無条件でリクエストを処理
    requests[].force_hashNobooltrue, falseインデックスされた文書との変更は無視して update_timeのみ比較し、既存文書に比べて update_timeが同じまたは最新の場合にリクエストを処理
    requests[].keyNo(update、deleteリクエスト時に必須)string文書の primary key
    requests[].contentNo(insert、upsert、updateリクエスト時に必須)objectメインセクションに該当する keyを必ず含むリクエストに使用する文書(セクション名を key、その keyにマッピングされる値を valueとする Map形式の Object)

    レスポンス

    フィールド名タイプ説明備考
    request_idstringindexerが返す update_time値yymmddHHMMSS.ssssss
    例: 170807133300.000000
    status.codenumberリクエスト状態0: 成功、-1: 失敗
    status.messagestring失敗時のエラーメッセージ
    total_document_countnumberリクエストに含まれる個々のリクエスト数

    レスポンス Status

    HTTP StatusDesc
    200OK(リクエスト完了)
    200status.code: -1(リクエスト失敗)
    400Bad Request
    401Unauthorized
    403Forbidden
    404Not Found
    500Internal Server Error

    リクエストタイプ

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

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

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

    リクエスト例 - insert

    POST https://cloudsearch.apigw.ntruss.com/CloudSearch/real/v1/domain/car_dev/document/manage
    
    POST /CloudSearch/real/v1/domain/car_dev/document/manage HTTP/1.1
    Host:cloudsearch.apigw.ntruss.com
    Content-Type: application/json
    x-ncp-apigw-signature-v2: cDwtHuQeGmwWyNmwlN6XIGA66zge4iMXvfoDQNna05g=
    x-ncp-apigw-timestamp: 1545817618751
    x-ncp-iam-access-key: teGTwtcSEGA7fu28BGGi
    
    {
      "requests": [
        {
          "type": "insert",
          "content": {
            "docid": "car-10001",
            "brand": "現代",
            "name": "2018サンタフェ",
            "color": "black",
            "price": "2817",
            "type": "中型"
          }
        },
        {
          "type": "insert",
          "content": {
            "docid": "car-10002",
            "brand": "現代",
            "name": "2018グレンジャー",
            "color": "white",
            "price": "2618"
          }
        }
        ]
    }
    

    レスポンス例(共通)

    {
      "result": "ok"
    }
    

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.