全部產品
Search
文件中心

OpenSearch:索引

更新時間:Dec 06, 2024

每個Document都是由多個field組成,每個field中包含一系列的詞語,構建索引的目的是為了加快檢索的速度,根據映射關係方向的不同,索引可以分為:

  • 倒排索引(index)倒排索引儲存了從單詞到DocID的映射關係,形如:詞-->(Doc1,Doc2,...,DocN)倒排索引主要用在檢索中,它能快速的定位使用者查詢到關鍵字對應的Document。

  • 正排索引(attribute)正排索引儲存從DocID到field的映射關係,形如:DocID-->(term1,term2,...termn)正排索引分單值和多值兩種,單值attribute由於長度是固定的(不包括string類型),因此尋找效率高,而且可以支援更新。多值attribute表示某個field中有多個資料(數量不固定),由於長度不確定,因此尋找效率相較與單值更慢,而且不能支援更新。正排索引主要是在查詢到了某個Document後,根據docid值能快速擷取到其attribute用來統計、排序、過濾中。目前引擎支援的正排欄位基本類型包括:INT8(8位有符號數字類型), UINT8(8位無符號數字類型), INT16(16位有符號數字類型), UINT16(16位無符號數字類型), INTEGER(32位有符號數字類型), UINT32(32位無符號數字類型), INT64(64位有符號數字類型), UINT64(64位無符號數字類型), FLOAT(32位浮點數), DOUBLE(64位浮點數), STRING(字串類型)多值的attribute只是一個field中可能出現數量不確定的單值attribute,引擎對上述的單實值型別attribute都支援對應的多值attribute(例如multi_int8,multi_string)。

  • 摘要(summary)summary的儲存形式與attribute類似,但是summary是將一個Document對應的多個field儲存在一起,並且建立映射,所以能很快從docid定位到對應的summary內容。summary主要是用於結果的展示,一般而言summary的內容都比較大,對於每次查詢而言不適合取過多的summary,只有最終需要展示結果的Document會取到對應的summary。由於summary過大,引擎在儲存summary時提供壓縮的機制,在schema中配置summary壓縮,那麼引擎在儲存時會用zlib壓縮後再儲存,讀取時引擎會先解壓,再返回給使用者。