列存在性查詢
ExistsQuery也叫NULL查詢或者空值查詢,一般用於判斷稀疏資料中某一行的某一列是否存在。例如查詢所有資料中address列不為空白的行。
-
要對Nested欄位進行列存在性查詢(ExistsQuery)時,請使用巢狀型別查詢(NestedQuery)進行嵌套。
-
如果需要查詢某一列為空白,則ExistsQuery需要和BoolQuery中的mustNotQueries結合使用。
-
以下情況會認為某一列不存在,以city列為例說明。
-
city列在多元索引中的資料類型為keyword(或其他基礎類型),如果資料表中某行資料不存在city列,則多元索引認為該行資料的city列不存在。
-
city列在多元索引中的資料類型為keyword(或其他基礎類型)數組,如果資料表中某行資料的city列為空白數組,即"city" = "[]",則多元索引認為該行資料的city列不存在。
-
介面
列存在性查詢的介面為Search或者ParallelScan,具體的Query類型為ExistsQuery。
參數
|
參數 |
說明 |
|
fieldName |
列名。 |
|
query |
設定查詢類型為ExistsQuery。 |
|
getTotalCount |
是否返回匹配的總行數,預設為false,表示不返回。 返回匹配的總行數會影響查詢效能。 |
|
tableName |
資料表名稱。 |
|
indexName |
多元索引名稱。 |
|
columnsToGet |
是否返回所有列,包含returnAll和columns設定。 returnAll預設為false,表示不返回所有列,此時可以通過columns指定返回的列;如果未通過columns指定返回的列,則只返回主鍵列。 當設定returnAll為true時,表示返回所有列。 |
使用方式
您可以使用控制台、命令列工具或者SDK進行列存在性查詢。進行列存在性查詢之前,您需要完成如下準備工作。
使用阿里雲帳號或者具有Table Store操作許可權的 RAM 使用者進行操作。如果需要為 RAM 使用者授權Table Store操作許可權,請參見通過RAM Policy為RAM使用者授權進行配置。
使用 SDK 方式和命令列工具方式進行操作時,如果當前無可用 AccessKey,則需要為阿里雲帳號或者 RAM 使用者建立 AccessKey。
已建立資料表。
已為資料表建立多元索引。
使用 SDK 方式進行操作時,還需要完成初始化Tablestore Client。
使用命令列工具方式進行操作前,還需要完成下載並啟動命令列工具,然後配置接入執行個體資訊並選擇要操作的表。具體操作,請參見下載命令列工具、啟動並配置接入資訊和資料表操作。
計費說明
使用多元索引查詢資料時會消耗讀輸送量。更多資訊,請參見多元索引計量計費。