626
新東方
Array數組類型說明__功能篇_最佳實踐_開放搜索-阿裏雲
本文主要對Array類型的使用場景、數據推送及搜索語法進行係統的介紹,方便大家理解。
什麼場景下適合使用ARRAY類型?
Array類型即為數組類型,數組類型即由相同類型的若幹個元素組織在一起的數據,期望在搜索的時候對於每一個元素都可以執行單獨的查詢。比如小說的標簽tags,包含“懸疑”、“穿越”、“古典”,希望在搜索“懸疑”的時候能找到該篇小說。
如何推送ARRAY類型的數據?
目前OpenSearch支持多種方式的數據推送方式,那我們就從每個途徑來分開闡述如何進行數據推送。
API方式
ARRAY類型需要采用JsonArray的方式來上傳數據。 如:
[{"fields": { "id": "0","int_array": [14,85],"float_array": [14.0,85.0],"string_array": ["abc","xyz"]},"cmd": "ADD"}]
具體數據上傳接口請參考API參考手冊-數據處理相關
SDK方式
這裏以php sdk為例,其他sdk做法類似。
<?php
require('php_2.0.4/CloudsearchClient.php');
require('php_2.0.4/CloudsearchIndex.php');
require('php_2.0.4/CloudsearchDoc.php');
define('ACCESSKEYID', '您的阿裏雲AccessKeyId');
define('SECRET', '您的阿裏雲AccessKeySecert');
define('APP_NAME', '您的應用名稱');
define('KEY_TYPE','aliyun'); #固定值
#每個應用具體host值請參考應用管理->應用詳情->API入口,打開debug接口方便調試
$client = new CloudsearchClient(
ACCESSKEYID,
SECRET,
array('host' => 'https://opensearch-cn-hangzhou.aliyuncs.com', 'debug' =>true),
KEY_TYPE
);
$doc = new CloudsearchDoc(APP_NAME, $client);
$json = <<<EOF
[{"fields": { "id": "0","int_array": [14,85],"string_array": ["abc","xyz"]},"cmd": "ADD"}]
EOF;
echo $doc->add($json, '您要推送數據的表名');
echo $client->getRequest(); #打印發送的請求串,前提是CloudsearchClient的debug打開
?>
數據源方式
數據源配置允許用戶對於數據源數據進行多種格式的解析操作,如果定義了ARRAY類型的字段,可以在該字段上選擇MultiValueSpliter插件,定義好多值分隔符,比如上例中的tags,在數據庫表中字段內容為:“穿越,懸疑,言情”,那麼多值分隔符為英文逗號:“,”,如圖所示即可。該插件會自動將數據庫中字段轉化成為引擎識別的ARRAY類型。
ARRAY類型如何進行檢索?能實現怎樣的效果?
ARRAY類型的每一個元素都可以單獨訪問,不管是用在query子句,還是filter子句,如上例中的tags字段(內容為:穿越,懸疑,言情),可以通過query=tags:'穿越'來找到該文檔;也可以通過query=title:'步步驚心'&&filter=tags="穿越",來實現標簽為“穿越”的名字包含“步步驚心”的小說。同時需要注意一點的是,搜索結果對於Array類型是按照字符串返回的,元素之間使用't'分隔,而不是數組。
相關問題
Q: 為什麼沒有text_array類型,text與string_array有什麼區別?
A: text類型(包含text、sws_text、nws_text、mws_text)涉及到分詞,本身支持的是模煳搜索,所以沒有數組的概念,而string_array指的是每個元素的精確匹配,很可能這裏的單個元素本身是由多個詞組組成的,但是沒關係要求的是全部匹配。
Q: 有沒有方法獲得array類型的元素個數?
A: 係統提供了fieldlen(array_field)的參數,可以獲取元素個數。
最後更新:2016-11-23 17:16:06
上一篇:
相關性實戰__功能篇_最佳實踐_開放搜索-阿裏雲
下一篇:
模煳搜索詳解__功能篇_最佳實踐_開放搜索-阿裏雲
啟動實例__實例相關接口_API 參考_雲服務器 ECS-阿裏雲
獲取產品類型信息__接口列表_服務器端API_阿裏雲物聯網套件-阿裏雲
付費用戶首超百萬 阿裏雲下一步落子何處?
從“單點智能”到“生態智能”,阿裏雲轉動物種進化的時鍾
RAM簡介__簡介_RAM API文檔_訪問控製-阿裏雲
開通 EDAS 服務__快速開始_企業級分布式應用服務 EDAS-阿裏雲
GIS地理數據分析__應用場景_雲數據庫 HybridDB-阿裏雲
暴恐敏感圖片異步接口__暴恐敏感圖片API_內容檢測API文檔_阿裏綠網-阿裏雲
雲服務器 ECS Linux SSH 連接交互過程簡介__遠程登錄 (SSH)_Linux操作運維問題_雲服務器 ECS-阿裏雲
查詢水印模板__水印模板接口_API使用手冊_媒體轉碼-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲