閱讀468 返回首頁    go 汽車大全


文檔操作__JavaSDK手冊_SDK參考手冊_開放搜索-阿裏雲


構造函數

接口描述

CloudsearchDoc類是非線程安全的,請每次調用時單獨實例化一個實例使用

參數描述

參數名稱 類型 描述
indexName String 指定操作的應用名。
client CloudsearchClient CloudsearchClient實例。

接口定義

CloudsearchDoc(String indexName, CloudsearchClient client)

查看文檔詳情

接口描述

根據doc id獲取doc的詳細信息。

參數描述

參數名稱 類型 描述
docId String 指定的doc id。

返回結果

  • 返回API返回的結果。

異常描述

  • IOException

  • ClientProtocolException

接口定義

String detail(String docId) throws ClientProtocolException, IOException

添加文檔

接口描述

設置需要添加的屬性名稱和屬性值,用於生成符合文檔格式的數據,所有更新結束之後需要調用push(String tableName)方法

參數描述

參數名稱 類型 描述
fields Map<String, Object> 字段名和字段值的map

異常描述

  • JSONException

接口定義

void add(Map<String, Object> fields) throws JSONException

更新文檔

接口描述

設置需要更新的屬性名稱和屬性值,用於生成符合文檔格式的數據,所有更新結束之後需要調用push(String tableName)方法

參數描述

參數名稱 類型 描述
fields Map<String, Object> 字段名和字段值的map

異常描述

  • JSONException

接口定義

void update(Map<String, Object> fields) throws JSONException

刪除文檔

接口描述

設置需要刪除的屬性名稱和屬性值,用於生成符合文檔格式的數據,所有更新結束之後需要調用push(String tableName)方法

參數描述

參數名稱 類型 描述
fields Map<String, Object> 字段名和字段值的map

異常描述

  • JSONException

接口定義

void remove(Map<String, Object> fields) throws JSONException

執行文檔變更操作(1)

接口描述

針對文檔的操作add、update和remove會生成符合文檔格式的數據,通過調用此接口用戶提交的文檔變更才會真正生效。

參數描述

參數名稱 類型 描述
tableName String 表名稱

返回結果

  • 返回的數據

異常描述

  • IOException

  • ClientProtocolException

接口定義

String push(String tableName) throws ClientProtocolException, IOException

執行文檔變更操作(2)

接口描述

通過此接口可以直接將符合文檔格式的數據直接推送到指定的表中

參數描述

參數名稱 類型 描述
docs String 此docs為用戶push的數據,此字段為json類型的字符串。
tableName String 操作的表名。

返回結果

  • 請求API並返回相應的結果。

異常描述

  • IOException

  • ClientProtocolException

接口定義

String push(String docs, String tableName) throws ClientProtocolException, IOException

通過文件導入數據(1)

接口描述

導入HA3 doc數據到指定的應用的指定表中

文件編碼:UTF-8

支持CMD: add, delete, update。如果給出的字段不是全部,add會在未給出的字段加默認值,

覆蓋原值;update隻會更新給出的字段,未給出的不變。

文件分隔符:

<pre>

編碼--------------描述-----------------------顯示形態--------------------

"x1En" 每個doc的分隔符. ^^(接換行符)

"x1Fn" 每個字段key和value分隔. ^_(接換行符)

"x1D" 多值字段的分隔符. ^]

</pre>

示例:

<pre>

CMD=add^_

url=https://www.opensearch.console.aliyun.com^_

title=開放搜索^_

body=xxxxxxxxx^

multivalue_feild=123^]1234^]12345^

^^

CMD=update^_

...

</pre>

NOTE: 文件結尾的分隔符也必需為"^^n",最後一個換行符不能省略。

參數描述

參數名稱 類型 描述
filePath String 指定的文件路徑。
tableName String 指定push數據的表名。

返回結果

  • 返回成功或者錯誤信息。

異常描述

  • JSONException

接口定義

String pushHADocFile(String filePath, String tableName) throws JSONException

通過文件導入數據(2)

接口描述

導入HA3 doc數據到指定的應用的指定表中

參數描述

參數名稱 類型 描述
filePath String 指定的文件路徑。
tableName String 指定push數據的表名。
offset long 文檔數據的偏移量,小於設定的offset行號的文檔將被跳過

返回結果

  • 返回成功或者錯誤信息。

異常描述

  • JSONException

接口定義

String pushHADocFile(String filePath, String tableName, long offset) throws JSONException

獲取上次請求的信息

返回結果

  • String

接口定義

String getDebugInfo()

文檔操作使用示例

應用結構

首先我們回顧一下我們之前創建的應用的結構:

名稱 含義
1 id 標示一個主鍵id,在應用中唯一的字段,primary_key
2 type_id 類型的id
3 cat_id 分類id,類似於,1標示體育,2、科技,3、軍事等等
4 title 資訊的標題
5 body 資訊的內容
6 url 資訊的url連接
7 author 作者
8 thumbnail 縮略圖
9 source 來源
10 create_timestamp 資訊的創建時間
11 update_timestamp 資訊的最後修改時間
12 hit_num 點擊次數
13 focus_count 關注次數
14 grade 等級
15 comment_count 評論數
16 tag 標簽

文檔概念

OpenSearch的文檔是一個json類型的字符串,結構如下:

[
    {
        fields:{...},
        cmd:"..."
    }
    ...
]

一條文檔是由fields字段和cmd字段構成的一個結構體,其中fields字段內包含文檔的核心數據,cmd表示針對此條文檔所做的操作,對文檔的操作包括添加(add),更新(update)和刪除(delete)三種。我們創建的news應用的一條文檔示例如下:

[
   {
    "fields": {
      "id": "0",
      "type_id": 34,
      "cat_id": 10,
      "title": "阿裏雲開放搜索助力企業搜索應用",
      "body": "廣大中小企業都有各種結構化的數據需要進行檢索,目前一般采用數據庫本身提供的搜索功能或者利用open source的搜索軟件搭建,這樣的做法不但會消耗網站本身的資源,性能也會很容易成為問題,而且相關性通常也不夠好。我們的產品的目的是要利用阿裏雲先進的雲計算和搜索技術向廣大中小企業提供低成本,高質量,高性能,可定製的數據搜索解決方案。本項目和雲搜索的通用解決方案目標略有不同,主要區別為本項目主要針對用戶的結構化數據進行搜索,雲搜索的通用解決方案則主要是針對網頁型數據為處理對象。",
      "url": "https://opensearch.console.aliyun.com",
      "author": "阿裏雲",
      "thumbnail": "https://opensearch.console.aliyun.com",
      "source": "新浪科技",
      "create_timestamp": 1426589415,
      "update_timestamp": 1426589415,
      "hit_num": 700,
      "focus_count": 31,
      "grade": 96,
      "comment_count": 68,
      "tag": "搜索"
    },
    "cmd": "ADD"
  },
]

文檔操作

在建立好應用之後,我們需要把自己應用的數據上傳到應用中,並且在運營的過程中對文檔的內容進行維護。這裏涉及到的文檔相關的操作包括以下四種:添加文檔、查看文檔、更新文檔和刪除文檔。

添加文檔

將文檔添加到OpenSearch應用的表中對應的操作cmd是ADD,在Java SDK中可以使用 add接口完成文檔添加操作: 例如上麵的fields字段的內容是從數據庫中讀取的,存放在一個Map<String,Object>類型的數據結構裏,可以直接使用add接口生成符合文檔格式的json字符串,再調用push接口完成上傳;

  client.add(fields);
  client.push("main");//main是上傳到的表名

如果已經生成了符合文檔格式的json_string 可以直接調用push接口實現上傳:

  client.push(json_string,"main");

查看文檔

將文檔上傳至應用後可以通過文檔id使用detail接口查看文檔內容:

  doc.detail("1");

更新文檔

更新文檔時 文檔中cmd字段對應的值為update,並且在fields字段中要提供待更新的文檔的id,然後調用push接口使其生效:

    doc.update(fields);
    doc.push("main");//main為待更新的文檔所在的表名

刪除文檔

刪除文檔時文檔中的cmd字段對應的值為delete,需要提供待刪除的文檔的id,然後調用push接口

  Map<String,Object> fields = new HashMap<String,Object>();
  fields.put("id",1);
    doc.remove(fields);
    doc.push("main");//main為待刪除文檔所在的表名

使用文件來上傳文檔

除了上麵的方法還可以通過文件量,小於設定的offset行號的doc將被跳過 導入HA3 doc數據到指定的應用的指定表中

文件編碼:UTF-8

支持CMD: add, delete, update。如果給出的字段不是全部,add會在未給出的字段加默認值,覆蓋原值;update隻會更新給出的字段,未給出的不變。

文件分隔符:

<pre>

編碼--------------描述-----------------------顯示形態--------------------

"x1En" 每個doc的分隔符. ^^(接換行符)

"x1Fn" 每個字段key和value分隔. ^_(接換行符)

"x1D" 多值字段的分隔符. ^]

</pre>

示例:

<pre>

CMD=add^_

url=https://www.opensearch.console.aliyun.com^_

title=開放搜索^_

body=xxxxxxxxx^

multivalue_feild=123^]1234^]12345^

^^

CMD=update^_

...

</pre>

注意:文件結尾的分隔符也必需為"^^n",最後一個換行符不能省略。

    doc.pushHADocFile(file_path,table_name);

使用HA類型文件推送文檔時還可以指定從文件中的某個位置開始推送,對應的接口為:

    doc.pushHADocFile(file_path,talbe_name,offset);

其中:offset 文檔數據的偏移量,小於設定的offset行號的doc將被跳過

調試接口

CloudsearchDoc類內置了一個調試接口,通過調用調試接口可以獲得操作發出的請求內容,當我們操作文檔時發現與預期不符時可以通過此接口查看請求細節。

    debugInfo = doc.getDebugInfo();

最後更新:2016-11-24 11:23:47

  上一篇:go 搜索操作__JavaSDK手冊_SDK參考手冊_開放搜索-阿裏雲
  下一篇:go 應用操作__JavaSDK手冊_SDK參考手冊_開放搜索-阿裏雲