日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

虛擬列

使用虛擬列功能時,您可以通過修改多元索引Schema或者新建多元索引來實現(xiàn)新字段新數(shù)據(jù)類型的查詢功能,而無需修改表格存儲的存儲結構及數(shù)據(jù)。

前提條件

  • 已初始化Client。具體操作,請參見初始化OTSClient

  • 已創(chuàng)建數(shù)據(jù)表,并且數(shù)據(jù)表的最大版本數(shù)(max Versions)必須為1,數(shù)據(jù)生命周期(Time to Live)必須滿足如下條件中的任意一個。具體操作,請參見創(chuàng)建數(shù)據(jù)表

    • 數(shù)據(jù)表的數(shù)據(jù)生命周期為-1(數(shù)據(jù)永不過期)。

    • 數(shù)據(jù)表的數(shù)據(jù)生命周期不為-1時,數(shù)據(jù)表為禁止更新狀態(tài)(即是否允許更新)。

注意事項

  • 虛擬列支持不同類型到字符串類型的相互轉換,轉換規(guī)則請參見下表。
    數(shù)據(jù)表中字段類型虛擬列字段類型
    StringKeyword(含數(shù)組)
    StringText(含數(shù)組)
    StringLong(含數(shù)組)
    StringDouble(含數(shù)組)
    StringGeo-point(含數(shù)組)
    LongKeyword
    LongText
    DoubleKeyword
    DoubleText
  • 虛擬列目前僅支持用在查詢語句中,不能用在ColumnsToGet返回列值,如果需要返回列值,可以指定返回該虛擬列的原始列。

參數(shù)

更多信息,請參見創(chuàng)建多元索引

示例

  1. 創(chuàng)建多元索引時指定虛擬列。

    以下示例用于創(chuàng)建一個多元索引,多元索引包含Col_KeywordCol_Long兩列,同時創(chuàng)建虛擬列Col_Keyword_Virtual_LongCol_Long_Virtual_Keyword。虛擬列Col_Keyword_Virtual_Long映射為數(shù)據(jù)表中Col_Keyword列,虛擬列Col_Long_Virtual_Keyword映射為數(shù)據(jù)表中Col_Long列。

    private static void createSearchIndex(SyncClient client) {
        CreateSearchIndexRequest request = new CreateSearchIndexRequest();
        //設置數(shù)據(jù)表名稱。
        request.setTableName("<TABLE_NAME>"); 
        //設置多元索引名稱。
        request.setIndexName("<SEARCH_INDEX_NAME>"); 
        IndexSchema indexSchema = new IndexSchema();
        indexSchema.setFieldSchemas(Arrays.asList(
            //設置字段名和類型。
            new FieldSchema("Col_Keyword", FieldType.KEYWORD), 
            //設置字段名和類型。
            new FieldSchema("Col_Keyword_Virtual_Long", FieldType.LONG) 
                 //設置字段是否為虛擬列。
                .setVirtualField(true) 
                 //虛擬列對應的數(shù)據(jù)表中字段。
                .setSourceFieldName("Col_Keyword"), 
            new FieldSchema("Col_Long", FieldType.LONG),
            new FieldSchema("Col_Long_Virtual_Keyword", FieldType.KEYWORD)
                .setVirtualField(true)
                .setSourceFieldName("Col_Long")));
        request.setIndexSchema(indexSchema);
        //調(diào)用client創(chuàng)建多元索引。
        client.createSearchIndex(request); 
    }
  2. 使用虛擬列查詢數(shù)據(jù)。

    以下示例用于查詢表中Col_Long_Virtual_Keyword列的值能夠匹配"1000"的數(shù)據(jù),返回匹配到的總行數(shù)和一些匹配成功的行。

    private static void query(SyncClient client) {
        SearchQuery searchQuery = new SearchQuery();
        TermsQuery termsQuery = new TermsQuery(); //設置查詢類型為TermsQuery。
        termsQuery.setFieldName("Col_Long_Virtual_Keyword"); //設置要匹配的字段。
        termsQuery.addTerm(ColumnValue.fromString("1000")); //設置要匹配的值。
        searchQuery.setQuery(termsQuery);
        searchQuery.setGetTotalCount(true); //設置返回匹配的總行數(shù)。
        SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAll(true); //設置返回所有列,不支持返回虛擬列。
        searchRequest.setColumnsToGet(columnsToGet);
    
        SearchResponse resp = client.search(searchRequest);
        System.out.println("TotalCount: " + resp.getTotalCount()); //匹配到的總行數(shù),非返回行數(shù)。
        System.out.println("Row: " + resp.getRows());
    }

相關文檔