全部產品
Search
文件中心

Tablestore:多元索引功能

更新時間:Sep 13, 2024

多元索引的核心功能包括任意列的查詢(包括主鍵列和非主鍵列)、多欄位自由組合查詢、地理位置查詢、全文檢索索引、模糊查詢、首碼查詢、巢狀查詢、去重、排序、查詢資料總行數和統計彙總,請根據實際情境需要使用。多元索引部分功能可以實現與SQL功能等價的效果。

核心功能

多元索引支援多維資料查詢功能和常用資料統計分析功能。具體功能說明請參見下表。

功能

說明

文檔

任意列的查詢(包括主鍵列和非主鍵列)

只使用主鍵列或主鍵列首碼查詢無法滿足一些查詢情境的需求。

使用多元索引,您可以使用非主鍵列進行資料查詢,只需要對要查詢的列建立多元索引,即可通過該列的值查詢資料。

多元索引任意查詢,例如精確查詢

多欄位自由組合查詢

多欄位自由組合查詢適用於訂單情境。在訂單情境中表的欄位可能多達幾十個,在建立表時很難完全確定要查詢欄位的組合方式。即使已確定要查詢欄位的組合方式,組合方式也會多達上百個。

如果使用關係型資料庫可能需要建立上百個索引,而且如果某種組合方式沒有提前預想到,未建立相應索引,則無法查詢。

使用Table Store,您只需要建立一個多元索引且在索引中包括可能需要查詢的欄位名,然後在查詢資料時隨意自由組合這些欄位進行查詢。同時多元索引還支援多種關係查詢,例如And、Or、Not。

多條件組合查詢

地理位置查詢

隨著行動裝置的普及,地理位置資訊的價值越來越大,越來越多的應用中增加了地理位置資訊,例如朋友圈、微博、外賣、運動、車連網等。這些應用中的資訊中含有地理位置資料,因此需要相匹配的查詢能力。

多元索引支援的地理位置查詢功能如下:

  • Near:以一個點為原點,查詢指定附近距離圈內的點,例如朋友圈中附近的人。

  • Within:指定一個矩形框或多邊形框,查詢出該框內的點。

基於上述功能,如果應用中需要地理位置相關查詢,使用Table Store多元索引即可一站式解決,不再需要藉助其他資料庫或搜尋系統。

全文檢索索引

多元索引分詞能力可用於支援全文檢索索引,但是多元索引只提供最基礎的BM25相關性,不提供自訂相關效能力。因此,如果有相關性的搜尋需求,建議使用搜尋系統實現,否則可以使用多元索引滿足需求。

目前多元索引提供了單字分詞、分隔字元分詞、最小數量語義分詞、最大數量語義分詞和模糊分詞5種分詞類型,請根據實際情境配置。

如果要在返回結果對關鍵詞進行高亮顯示,您可以使用查詢高亮功能來實現。

向量檢索

多元索引支援向量檢索能力,您能夠利用數值向量進行高效的近似最近鄰查詢,從而在大規模資料集中找到最相似的資料項目。該功能適用於推薦系統、映像與視頻檢索、自然語言處理等應用情境。

向量檢索介紹與使用

模糊查詢

萬用字元查詢等價於關係型資料庫中的like功能。您可以通過指定字元和任意萬用字元(?*)可實作類別似於like的功能。

首碼查詢

首碼查詢支援按照首碼匹配所需內容,例如使用apple首碼查詢資料會匹配到apple6sapplexr等內容。首碼查詢除了支援中英文外,還支援其他語言。

首碼查詢

列存在性查詢(NULL查詢)

查詢某一列是否為空白值,類似於NULL查詢。

列存在性查詢

巢狀查詢

線上應用的資料中,除了扁平化的一層結構外還存在一些更複雜的多層結構情境,例如圖片標籤。假設某個系統中儲存了大量圖片,每個圖片中都有多個實體(例如房子、轎車、人等),在每個圖片中這些實體的位置和空間大小各不相同,因此每個實體的權重(score)不同,這樣相當於每個圖片均有多個標籤,每個標籤包括一個名稱和一個權重分。如果要根據標籤中的條件查詢,此時即可使用到巢狀查詢。圖片標籤採取JSON格式儲存,資料範例如下:

{
 "tags": [
   {
      "name": "car",
      "score": 0.78
   },
   {
      "name": "tree",
      "score": 0.24
   }
 ]
}

巢狀查詢可以解決多層邏輯關係的資料存放區和查詢,為複雜資料的建模提供了極大地便利性。

對於包含巢狀型別的複雜資料結構(例如JSON)也支援使用查詢高亮功能來精準定位所需資訊。

去重

多元索引為查詢結果提供了去重功能。去重功能可以限制某個屬性在一次結果中的最多個數,提供更好的結果多樣效能力。例如電商搜尋中,搜尋一個膝上型電腦可能第一頁全是某一個品牌的電腦,返回結果對使用者並不友好,多元索引的去重功能可以避免此類情況。

摺疊(去重)

排序

Table Store提供按照主鍵的字母順序排序功能,但如果要按照其他欄位排序,您可以使用多元索引的排序能力。

多元索引提供了豐富的排序能力,包括正序或逆序、單條件、多條件等,多元索引排序均為全域排序。多元索引的預設返回結果是按照表中的主鍵順序排序。

資料總行數

使用多元索引查詢時可以指定返回本次請求命中的資料行數。此功能可以用於資料校正、營運等情境。

  • 如果指定一個空查詢條件,則所有建立了索引的資料都符合條件,此時返回的資料總行數即為表中已建立索引的資料總行數。

  • 如果停止寫入資料且資料均已建立索引,則此時返回的資料總行數是資料表中的總行數。

統計彙總

多元索引提供常見的統計彙總功能,包括最大值(Max)、最小值(Min)、平均值(Avg)、求和(Sum)、統計行數(Count)、去重統計行數(DistinctCount)、分組(GroupBy)、百分位(Percentile)、長條圖(Histogram)等功能,可以滿足使用者在輕量級分析情境對基本統計彙總的需求。

統計彙總

與SQL匹配情況

多元索引部分功能可以實現與SQL功能等價的效果。SQL中的大部分功能在多元索引中相匹配的功能請參見下表。

SQL

多元索引

多元索引文檔

Show

API:DescribeSearchIndex

查詢多元索引描述資訊

Select

參數:ColumnsToGet

多元索引任意查詢,例如精確查詢

From

參數:index name

重要

已經支援單索引,多索引還未支援。

多元索引任意查詢,例如精確查詢

Where

Query:TermQuery等各種Query

多元索引任意查詢,例如精確查詢

Order by

參數:sort

排序和翻頁

Limit

參數:limit

排序和翻頁

Delete

API:先Query再DeleteRow

  1. 通過多元索引任意查詢擷取行主鍵

  2. 通過主鍵刪除資料

Like

Query:WildcardQuery

萬用字元查詢

And

參數:operator = and

多條件組合查詢

Or

參數:operator = or

Not

Query:BoolQuery(mustNotQueries)

Between

Query:RangeQuery

範圍查詢

Null

Query:ExistsQuery

列存在性查詢

In

Query:TermsQuery

多詞精確查詢

Min

Aggregation:min

統計彙總

Max

Aggregation:max

Avg

Aggregation:avg

Count

Aggregation:count

Count(distinct)

Aggregation:distinctCount

Sum

Aggregation:sum

Group By

GroupBy