列存在性查詢

更新時間:
Copy as MD

ExistsQuery也叫NULL查詢或者空值查詢,一般用於判斷稀疏資料中某一行的某一列是否存在。例如查詢所有資料中address列不為空白的行。

說明
  • 要對Nested欄位進行列存在性查詢(ExistsQuery)時,請使用巢狀型別查詢(NestedQuery)進行嵌套。

  • 如果需要查詢某一列為空白,則ExistsQuery需要和BoolQuery中的mustNotQueries結合使用。

  • 以下情況會認為某一列不存在,以city列為例說明。

    • city列在多元索引中的資料類型為keyword(或其他基礎類型),如果資料表中某行資料不存在city列,則多元索引認為該行資料的city列不存在。

    • city列在多元索引中的資料類型為keyword(或其他基礎類型)數組,如果資料表中某行資料的city列為空白數組,即"city" = "[]",則多元索引認為該行資料的city列不存在。

前提條件

參數

參數

說明

fieldName

列名。

query

查詢類型。設定為 TableStore.QueryType.EXISTS_QUERY 以執行列存在性查詢。

getTotalCount

是否返回匹配的總行數。預設值為 false,表示不返回。

設定為 true 會降低查詢效能。

tableName

資料表名稱。

indexName

多元索引名稱。

columnsToGet

設定返回列。

  • 當設定returnTypeTableStore.ColumnReturnType.RETURN_SPECIFIED時,需要通過returnNames指定返回的列。

  • 當設定returnTypeTableStore.ColumnReturnType.RETURN_ALL時,表示返回所有列。

  • 當設定returnTypeTableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX時,表示返回多元索引中的所有列。.

  • 當設定returnTypeTableStore.ColumnReturnType.RETURN_NONE時,表示不返回所有列,只返回主鍵列。

樣本

以下樣本查詢 pic_des 列不為空白的所有行。

client.search({
    tableName: TABLE_NAME,
    indexName: INDEX_NAME,
    searchQuery: {
        offset: 0,
        limit: 10, //設定 limit=0 可僅擷取總行數,不返回具體資料。
        query: {
            queryType: TableStore.QueryType.EXISTS_QUERY,
                        query: {
                                fieldName: "pic_des"
                        },
        },
        getTotalCount: true //設定為 true 時返回匹配的總行數,預設為 false。
    },
    columnToGet: { //返回列設定:RETURN_SPECIFIED(指定列)、RETURN_ALL(所有列)、RETURN_ALL_FROM_INDEX(多元索引中的所有列)、RETURN_NONE(不返回)。
        returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
        returnNames: ["Col_1", "Col_2", "Col_3"]
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

常見問題

相關文檔