系統
什麼是OpenSearch(OpenSearch)?
OpenSearch(OpenSearch)是為您量身定製打造的針對結構化資料的雲端搜尋服務。您可以通過我們提供的平台非常容易地擁有高品質,易擴充,可定製的搜尋服務而不用關心搜尋的各種技術細節。您所需要做的只是做好相關配置並上傳資料,然後就可以通過API獲得搜尋結果了。我們同時還提供了典型語言的SDK,具體支援的語言的SDK請參看管理介面中的下載中心。
OpenSearch能給我帶來什麼樣的好處?
OpenSearch是在雲端的搜尋服務 ,具有高擴充性,可以隨著您的資料規模自動擴充所需的硬體資源,您不需要任何硬體投入就可以擁有搜尋服務。搜尋功能也不會給您的現有伺服器帶來任何壓力。快速,高品質的搜尋結果可以更好地滿足您的使用者的資訊需求,從而提高您的產品的使用者粘性,提高您的產品的流量和人氣。最終為您帶來可觀的經濟價值。
我可以發送多少次搜尋請求?
目前沒有限制,具體請根據實際使用方式在控制台進行手動設定,超大QPS提交申請後需要人工審核。該申請請盡量提前,如果QPS過大,系統內部會自動進行調整,可能需要幾天的操作時間。
搜尋請求的latency有多大?
實際訪問受查詢query複雜程度、匹配的doc數影響很大,具體請根據實際情況自行測試資料。
OpenSearch如何收費?
具體請查看計費概述,目前計費模型改版後分為舊的儲存+qps的計費方式以及新的LCU計費方式。(註:如果使用的是舊的計費方式,那麼監控中的LCU消耗與計費無關,可以僅當成一個參考資料作搜尋效能的參考。)
流程
什麼叫應用,如何來建立?
應用是具有相同應用結構的可搜尋的文檔集合,您可以為應用定義資料表、欄位類型、配置搜尋屬性,上傳資料並擷取搜尋結果。您可以通過控制台介面或者Web API來建立,管理,刪除應用。
定義應用結構時候的“索引到”的用處是什嗎?
query子句查詢關鍵字的時候,必須要指定要查詢的索引,即定義應用結構的索引到欄位。索引欄位包含一個或多個源欄位。定義了索引欄位,引擎構建的時候會建立查詢詞到文檔的倒排鏈表,查詢時可以通過查詢詞快速定位到文檔,大大提高查詢效能。
如論壇情境上有兩個搜尋需求:1,綜合搜尋(標題、內容、作者);2,標題搜尋。源欄位為title、body、author,那麼可以將title、body、author索引到default欄位上 ,再將title索引到 title_search欄位上,這樣query=default:’keyword’可以實現需求1, query=title_searc:’keyword’可以實現需求2。
什麼是模板?
模板是我們為了進一步減少您的工作而針對互連網上典型的資料製作的包括應用結構、排序方法等在內的應用程式容器。目前我們提供的模板可以在建立應用的時候看到詳細資料。將來我們會根據情況添加更多更豐富的模板供您選擇。
選擇模板後可以修改模板的應用結構嗎?
可以,具體參見應用管理-》詳情-》線下變更,操作變更。具體步驟可參考文檔:線下變更
如何上傳資料到應用?
如果您是RDS、MaxCompute(原ODPS)、PolarDB的使用者,您可以通過控制台上配置相關執行個體資訊的方式來做自動同步,其他使用者可以通過上傳資料API或者管理介面中的上傳功能來上傳資料。
我可以上傳多少文檔?
應用上傳文檔數沒有上限,可以自行在控制台上配置文檔容量配額,具體操作過程請查看應用管理->配額及計費部分。同QPS峰值一樣,對於大容量的申請需要人工審核。該項配額會影響計費資訊,請按照實際需要配置。
如何刪除應用?
您可以在管理工具中點擊索引的名字後在索引詳情頁裡點擊“刪除應用”,然後在系統提示中按確認後完成刪除的工作。
如何刪除應用中的文檔?
在上傳的資料中通過SDK設定delete操作就可以實現對指定文檔的刪除。另外在控制台——搜尋測試介面中也提供了對具體文檔的刪除功能。
如何清空應用?
如果您需要保留應用程式名稱,您需要逐個刪除應用中的文檔來清空索引。如果您不需要保留應用程式名稱,您可以建立一個新應用並拷貝相關配置到新應用來實現清空的目的。後續我們會提供獨立的資料清空功能。目前進階版支援定時清理任務,保留7-180天的文檔。
資料匯入
OpenSearch是否可以用在阿里雲的資料庫服務上(RDS)?
可以。只需在應用資料來源配置好RDS的執行個體資訊,即可實現RDS操作自動同步到OpenSearch系統(配置完畢後需要執行資料匯入並索引重建,以便將當前全量資料匯入到系統中)。
OpenSearch現在支援哪些阿里雲產品直接對接?
目前支援RDS、MaxCompute(原ODPS)、PolarDB,後續也會有其他的產品陸續接入,敬請期待。
API/SDK上傳文檔格式是怎樣的?
目前我們支援JSON格式。請參考模板頁面中提供的範例檔案或者API文檔資料處理部分說明。
add和update命令有什麼區別?
add或update時上傳的文檔,如果沒有給定一些欄位的值,add會用預設值覆蓋,update不處理。
搜尋
OpenSearch都提供哪些搜尋功能?
OpenSearch提供針對文本,數字等基本類型的搜尋,並提供查詢、過濾、排序、統計、彙總等功能,典型資料範本,自訂索引結構,自訂搜尋結果排序、自訂查詢分析(同義字、錯誤修正等)以及下拉提示。
如何擷取全部文檔?
不支援。搜尋引擎的重點是儘可能短的時間內將最優的結果返回,所以未提供查看全部文檔的功能。OpenSearch有最大的返回結果數的限制(具體查看系統限制),即使翻頁也只能在返回結果數viewtotal中進行。
Array類型為什麼在查詢結果裡面是string,而不是數組?
Array類型搜尋結果是通過\t分隔的。
OpenSearch能否自行指定分詞方式和詞庫?
分詞只要在兩個地方使用,一個是build索引時,一個是查詢時。目前的詞庫都是全系統公用的配置,不支援使用者自訂詞庫。但目前OpenSearch系統支援多種分詞方式,包括了自訂分詞,具體請參考文檔“使用者指南”中的“欄位類型和分詞類型”。
文檔中有“吃飯了”,我搜尋“吃飯了嗎”怎麼搜不出來?
原因是目前OpenSearch分詞後的term需要全部命中才能返迴文檔,上面的query=default:’吃飯了嗎’相當於query=default:’吃飯’ AND default:’了’ AND default:’嗎’,而文檔中沒有“嗎”這個term,所以文檔不會被召回。
這種情況下可以配置查詢分析的“詞權重”功能,會對不重要的詞做RANK操作,解決長尾query的召回問題。如上述的query會被自動改寫為:query=default:’吃飯’ RANK default:’了’ RANK default:’嗎’,這樣上面的文檔就會被召回,且排序上會排到“吃飯”文檔的前面。
我搜尋”mx”和”player”,文檔中有”mxplayer”,為什麼沒有召回?
對於英文最小分詞粒度到單詞層級,上述文檔中的”mxplayer”會被分成一個詞,所以搜尋”mx”、”player”及”mx player”都無法召回帶有”mxplayer”的文檔。
OpenSearch支援小語種搜尋嗎?
目前系統只支援中英文的語義分詞,其他以空格分隔的語種(葡語、俄語等)也可以支援基本的單詞匹配,但不支援語義(片語),而不以空格分隔的語種(日語、韓語等)則無法支援,目前已推出泰語、越南語分析器,具體請參考:文本分析器。
搜尋結果上如何分離相同會員的產品,每家會員只出1條最相關的,然後顯示總條目?
可以結合Aggregate子句和Distinct子句。distinct子句可以做到相同分類結果打散,aggregate子句可以對相同分類結果做統計。
搜尋是否存在緩衝機制?
5分鐘內的相同query的返回結果會被緩衝,緩衝預設自動開啟,不支援修改或關閉。
API及SDK
用SDK推資料的地址是哪啊?目前OpenSearch為多地區部署,每個地區都有獨立的API入口,具體請查看應用詳情中的API入口。
通過SDK上傳資料返回ok了,但為什麼頁面上看到有錯誤?要怎麼擷取錯誤訊息?
SDK返回status為OK,只是表示系統接收到資料。但是在後續資料處理過程中發生的錯誤,將會在控制台應用的錯誤記錄檔中展現出來。如果出現資料上傳成功但是搜尋不到,請先查看錯誤記錄檔中的資訊,修改後重新匯入。目前暫時沒有支援擷取錯誤記錄檔資訊的介面。
如果問題還未能解決,麻煩提交工單反饋。
飄紅常見問題
片段長度是什麼意思?
片段長度表示整個摘要最大長度,飄紅只會在片段長度內進行飄紅
...是什麼意思?
...是每個片段之間的串連符,例如有一個長度為1000的欄位,片段長度為200,有三個分區,那麼這三個分區之間就使用... 進行串連,飄紅也只會在片段之內進行飄紅,其他欄位就不會顯示。