多元索引的核心功能包括任意列的查詢(包括主鍵列和非主鍵列)、多欄位自由組合查詢、地理位置查詢、全文檢索索引、模糊查詢、首碼查詢、巢狀查詢、去重、排序、查詢資料總行數和統計彙總,請根據實際情境需要使用。多元索引部分功能可以實現與SQL功能等價的效果。
核心功能
多元索引支援多維資料查詢功能和常用資料統計分析功能。具體功能說明請參見下表。
功能 | 說明 | 文檔 |
任意列的查詢(包括主鍵列和非主鍵列) | 只使用主鍵列或主鍵列首碼查詢無法滿足一些查詢情境的需求。 使用多元索引,您可以使用非主鍵列進行資料查詢,只需要對要查詢的列建立多元索引,即可通過該列的值查詢資料。 | 多元索引任意查詢,例如精確查詢等 |
多欄位自由組合查詢 | 多欄位自由組合查詢適用於訂單情境。在訂單情境中表的欄位可能多達幾十個,在建立表時很難完全確定要查詢欄位的組合方式。即使已確定要查詢欄位的組合方式,組合方式也會多達上百個。 如果使用關係型資料庫可能需要建立上百個索引,而且如果某種組合方式沒有提前預想到,未建立相應索引,則無法查詢。 使用Table Store,您只需要建立一個多元索引且在索引中包括可能需要查詢的欄位名,然後在查詢資料時隨意自由組合這些欄位進行查詢。同時多元索引還支援多種關係查詢,例如And、Or、Not。 | |
地理位置查詢 | 隨著行動裝置的普及,地理位置資訊的價值越來越大,越來越多的應用中增加了地理位置資訊,例如朋友圈、微博、外賣、運動、車連網等。這些應用中的資訊中含有地理位置資料,因此需要相匹配的查詢能力。 多元索引支援的地理位置查詢功能如下:
基於上述功能,如果應用中需要地理位置相關查詢,使用Table Store多元索引即可一站式解決,不再需要藉助其他資料庫或搜尋系統。 | |
全文檢索索引 | 多元索引分詞能力可用於支援全文檢索索引,但是多元索引只提供最基礎的BM25相關性,不提供自訂相關效能力。因此,如果有相關性的搜尋需求,建議使用搜尋系統實現,否則可以使用多元索引滿足需求。 目前多元索引提供了單字分詞、分隔字元分詞、最小數量語義分詞、最大數量語義分詞和模糊分詞5種分詞類型,請根據實際情境配置。 如果要在返回結果對關鍵詞進行高亮顯示,您可以使用查詢高亮功能來實現。 | |
向量檢索 | 多元索引支援向量檢索能力,您能夠利用數值向量進行高效的近似最近鄰查詢,從而在大規模資料集中找到最相似的資料項目。該功能適用於推薦系統、映像與視頻檢索、自然語言處理等應用情境。 | |
模糊查詢 | 萬用字元查詢等價於關係型資料庫中的like功能。您可以通過指定字元和任意萬用字元( | |
首碼查詢 | 首碼查詢支援按照首碼匹配所需內容,例如使用 | |
列存在性查詢(NULL查詢) | 查詢某一列是否為空白值,類似於NULL查詢。 | |
巢狀查詢 | 線上應用的資料中,除了扁平化的一層結構外還存在一些更複雜的多層結構情境,例如圖片標籤。假設某個系統中儲存了大量圖片,每個圖片中都有多個實體(例如房子、轎車、人等),在每個圖片中這些實體的位置和空間大小各不相同,因此每個實體的權重(score)不同,這樣相當於每個圖片均有多個標籤,每個標籤包括一個名稱和一個權重分。如果要根據標籤中的條件查詢,此時即可使用到巢狀查詢。圖片標籤採取JSON格式儲存,資料範例如下:
巢狀查詢可以解決多層邏輯關係的資料存放區和查詢,為複雜資料的建模提供了極大地便利性。 對於包含巢狀型別的複雜資料結構(例如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 |
|
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 |