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。
使用命令列工具方式進行操作前,還需要完成下載並啟動命令列工具,然後配置接入執行個體資訊並選擇要操作的表。具體操作,請參見下載命令列工具、啟動並配置接入資訊和資料表操作。
計費說明
使用多元索引查詢資料時會消耗讀輸送量。更多資訊,請參見多元索引計量計費。