全部產品
Search
文件中心

Tablestore:建立多元索引的映射關係

更新時間:Jun 30, 2024

執行CREATE TABLE語句為已存在的表或者多元索引建立映射關係。建立映射關係時需要配置表的欄位名稱、欄位類型和主鍵資訊以及根據需要配置查詢資料時的執行引擎。本文介紹如何為已存在的多元索引建立映射關係。

說明

關於建立表的映射關係的具體操作,請參見建立表的映射關係

背景資訊

由於執行CREATE TABLE建立表的映射關係時,資料表可能會包含多種不同的索引類型,當使用者使用映射表查詢資料時,SQL引擎會自動選擇合適的資料表主鍵查詢、二級索引或者多元索引執行查詢。為了讓使用者更清晰地選擇指定多元索引執行查詢,SQL引擎支援通過CREATE TABLE語句建立指定多元索引的映射關係。

文法

CREATE TABLE [IF NOT EXISTS] user_defined_name(column_name data_type [,column_name data_type])
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name": index_name, "table_name": table_name}';

參數

參數

是否必選

說明

IF NOT EXISTS

如果指定IF NOT EXISTS,無論表是否存在,均會返回成功;如果未指定IF NOT EXISTS,則只有當表不存在時,才會返回成功。

user_defined_name

多元索引映射表名,用於唯一標識一張SQL綁定表。

後續執行SQL操作時要使用該表名。

column_name

列名。

SQL中的列名必須和原始表中的列名等效,例如原始表中列名為Aa,在SQL中列名必須使用Aa、AA、aA或者aa中的一個。

data_type

列的資料類型,包含BIGINT、DOUBLE、BOOL等多種資料類型。

SQL中列的資料類型必須和原始表中列的資料類型相匹配。關於資料類型映射的更多資訊,請參見SQL資料類型映射

ENGINE

使用映射表查詢資料時的執行引擎。取值範圍如下:

  • tablestore(預設):SQL引擎將自動選擇合適的索引執行查詢。

  • searchindex:SQL引擎將通過指定的多元索引執行查詢。設定為此項時,您必須在ENGINE_ATTRIBUTE中配置index_name和table_name。

ENGINE_ATTRIBUTE

執行引擎的屬性,以JSON格式表示。包括如下選項:

  • index_name:多元索引映射表綁定的多元索引名稱。只有建立多元索引的映射關係時才需要配置。

  • table_name:多元索引映射表綁定的多元索引所屬的資料表名稱。只有建立多元索引的映射表時才需要配置。

  • consistency:執行引擎支援的一致性模式。

    • 建立表的映射關係時,取值範圍如下:

      • eventual(預設):執行的查詢結果滿足最終一致。此時新資料寫入後會在幾秒後影響到查詢結果。

      • strong:執行的查詢結果滿足強一致性。此時新資料寫入後立刻影響到查詢結果。

    • 建立多元索引的映射關係時,consistency取值固定為eventual。

  • allow_inaccurate_aggregation:是否允許通過犧牲彙總操作的精準度提升查詢效能。類型為Boolean。

    • 建立表的映射關係時,allow_inaccurate_aggregation的預設取值為true,表示允許通過犧牲彙總操作的精度提升查詢效能。您可以根據需要將此項配置為false。

    • 建立多元索引的映射關係時,allow_inaccurate_aggregation的取值固定為true。

樣本

以下樣本用於為exampletable1資料表的多元索引exampletable1_index建立多元索引映射表search_exampletable1。多元索引映射表包含id(BIGINT類型)、colvalue(MEDIUMTEXT類型)和content(MEDIUMTEXT類型)。

CREATE TABLE search_exampletable1(id BIGINT, colvalue MEDIUMTEXT, content MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable1_index", "table_name": "exampletable1"}';

建立多元索引映射表search_exampletable1後,您可以執行以下操作:

  • 查詢索引描述資訊

    以下樣本用於查詢search_exampletable1的索引描述資訊。

    SHOW INDEX IN search_exampletable1;

    關於查詢索引描述資訊的更多資訊,請參見查詢索引描述資訊

  • 查詢匹配字串的資料

    以下樣本用於查詢search_exampletable1中content列值匹配"tablestore cool"字串至少1個分詞的行資料,最多返回10行,並且返回id和content列。

    SELECT id,content FROM search_exampletable1 WHERE TEXT_MATCH(content, "tablestore cool") LIMIT 10;

    關於查詢匹配字串的資料的更多資訊,請參見查詢資料全文檢索索引

常見問題

SQL查詢常見錯誤排查

相關文檔

  • 建立多元索引映射關係後,您可以通過SELECT語句查詢與分析表中資料。更多資訊,請參見查詢資料多元索引數群組類型多元索引巢狀型別全文檢索索引多元索引虛擬列

  • 如果資料表的屬性列有變化,您需要先修改多元索引屬性列後再修改多元索引映射關係的屬性列。

    1. 修改多元索引屬性列,請根據選擇合適的方式。

      • 通過動態修改Schema功能修改多元索引欄位。更多資訊,請參見動態修改schema

      • 刪除多元索引後重新建立多元索引。更多資訊,請參見建立多元索引

    2. 修改多元索引映射關係的屬性列,請根據選擇合適的方式。

      • 通過ALTER TABLE語句直接修改映射表屬性列。更多資訊,請參見更新映射表屬性列

      • 刪除映射表後重新建立多元索引映射關係。

  • 如果需要查詢表的描述資訊,您可以通過DESCRIBE語句實現。更多資訊,請參見查詢表的描述資訊

  • 如果不再需要使用某個映射關係,您可以通過DROP MAPPING TABLE語句刪除映射關係。更多資訊,請參見刪除映射關係

  • 如果需要查看錶的索引資訊,您可以通過SHOW INDEX語句實現。更多資訊,請參見查詢索引描述資訊

  • 如果需要列出當前資料庫中的映射表名稱列表,您可以通過SHOW TABLES語句實現。更多資訊,請參見列出映射表名稱列表