Tablestore多元索引(Search Index)基於倒排索引和列式儲存,可以解決多種巨量資料複雜的查詢問題。建立多元索引後,您可以使用多元索引進行資料查詢。

前提條件

  • 已建立資料表,且資料表的最大版本數(max Versions)必須為1。
  • 已初始化Client。具體操作,請參見初始化

介面

分類 介面 描述
管控介面 CreateSearchIndex 建立一個多元索引。
DescribeSearchIndex 擷取多元索引的詳細描述資訊。
ListSearchIndex 列出多元索引的列表。
DeleteSearchIndex 刪除某個多元索引。
查詢介面 Search 查詢介面包括所有的查詢功能,以及排序、統計彙總等分析能力,其結果會按照指定的順序返回。
ParallelScan 資料匯出介面只包括所有的查詢功能,捨棄了排序、統計彙總等分析能力,能將命中的資料以更快的速度全部返回。

多並發匯出資料時,您還需要通過ComputeSplits介面擷取當前ParallelScan單個請求的最大並發數。

操作步驟

  1. 建立多元索引。具體操作,請參見建立多元索引
  2. 使用Search介面或者ParallelScan介面查詢資料,請根據下表說明選擇合適的查詢方式。
    名稱 Query 描述
    全匹配查詢 MatchAllQuery 常用於查詢表中資料總行數,或者隨機返回幾條資料。
    匹配查詢 MatchQuery 採用近似匹配的方式查詢表中的資料。會先對query內容按照配置好的分詞器做切分,然後按照切分好後的詞去查詢。

    不同分詞之間的關係是Or,當分詞後的多個詞只要有部分匹配時,則表示行資料滿足查詢條件。

    短語匹配查詢 MatchPhraseQuery 類似於MatchQuery,但是只有當分詞後的多個詞必須在行資料中以同樣的順序和位置存在時,才表示行資料滿足查詢條件。
    精確查詢 TermQuery 採用完整精確匹配的方式查詢表中的資料,類似於字串匹配。

    對於分詞字串(Text)類型,當分詞後的多個詞只要有詞可以精確匹配時,則表示行資料滿足查詢條件。

    多詞精確查詢 TermsQuery 類似於TermQuery,但是可以一次指定多個詞,當多個詞中只要有一個詞匹配,則表示行資料滿足查詢條件。
    首碼查詢 PrefixQuery 根據首碼條件查詢表中的資料。

    對於分詞字串(Text)類型,當分詞後的多個詞只要有詞滿足首碼條件時,則表示行資料滿足查詢條件。

    範圍查詢 RangeQuery 根據範圍條件查詢表中的資料。

    對於分詞字串(Text)類型,當分詞後的多個詞只要有詞滿足範圍條件時,則表示行資料滿足查詢條件。

    萬用字元查詢 WildcardQuery 要匹配的值可以是一個帶有萬用字元的字串。

    要匹配的值中可以用星號(“*”)代表任一字元序列,或者用問號(“?”)代表任意單個字元。

    多欄位自由組合查詢 BoolQuery 查詢條件可以包含一個或者多個子查詢條件,根據子查詢條件是否滿足來判斷一行資料是否滿足查詢條件。

    子查詢條件的組合關係支援And、Or、Not等。

    巢狀查詢 NestedQuery 查詢巢狀型別中子文檔的資料。
    地理距離查詢 GeoDistanceQuery 根據一個中心點和距離條件查詢表中的資料,當一個地理位置點到指定的中心點的距離不超過指定的值時,則表示行資料滿足查詢條件。
    地理長方形範圍查詢 GeoBoundingBoxQuery 根據一個長方形範圍的地理位置邊界條件查詢表中的資料,當一個地理位置點落在給出的長方形範圍內時,則表示行資料滿足查詢條件。
    地理多邊形範圍查詢 GeoPolygonQuery 根據一個多邊形範圍條件查詢表中的資料,當一個地理位置點落在指定的多邊形範圍內時,則表示行資料滿足查詢條件。
    列存在性查詢 ExistQuery 也叫NULL查詢或者空值查詢。一般用於稀疏資料中,用於判斷某一行的某一列是否存在。例如查詢所有資料中,address列不為空白的行有哪些。

    只有當某一列在行資料中不存在或者為空白數組("[]")時,則表示在行資料中該列不存在。

相關操作

  • 如果要進行資料分析,例如求最值、求和、統計行數等,您可以使用Search介面的統計彙總功能來實現。具體操作,請參見統計彙總
  • 如果要快速匯出資料,而不關心整個結果集的順序時,您可以使用ParallelScan介面和ComputeSplits介面實現多並發匯出資料。具體操作,請參見並發匯出資料
  • 當通過Search介面查詢資料時,如果要對結果集進行排序或者翻頁,您可以使用排序和翻頁功能來實現。具體操作,請參見排序和翻頁
  • 當通過Search介面查詢資料時,如果要按照某一列對結果集做摺疊,使對應類型的資料在結果展示中只出現一次,您可以使用摺疊(去重)功能來實現。具體操作,請參見摺疊(去重)
  • 如果要進行全文檢索索引,您可以對可分詞類型的欄位進行分詞後再選擇合適的查詢方式來實現。具體操作,請參見分詞
  • 如果要進行多層邏輯關係的資料存放區和查詢,您可以使用巢狀型別儲存資料後再選擇巢狀查詢來實現。具體操作,請參見巢狀型別巢狀型別查詢
  • 如果要系統自動清理多元索引中超過儲存時間的資料,您可以使用多元索引生命週期功能。具體操作,請參見多元索引生命週期
  • 如果要在多元索引中新增、更新或者刪除索引列,您可以使用動態修改schema功能實現。具體操作,請參見動態修改schema
  • 如果要在不修改資料表的儲存結構和資料的情況下,對新欄位新資料類型的查詢,您可以使用虛擬列功能實現。具體操作,請參見虛擬列