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

列存在性查詢

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

說明
  • 要對Nested字段進行列存在性查詢(ExistsQuery)時,請使用嵌套類型查詢(NestedQuery)進行嵌套。
  • 如果需要查詢某一列為空,則ExistsQuery需要和BoolQuery中的mustNotQueries結合使用。
  • 以下情況會認為某一列不存在,以city列為例說明。
    • city列在多元索引中的數據類型為keyword(或其他基礎類型),如果數據表中某行數據不存在city列,則多元索引認為該行數據的city列不存在。
    • city列在多元索引中的數據類型為keyword(或其他基礎類型)數組,如果數據表中某行數據的city列為空數組,即"city" = "[]",則多元索引認為該行數據的city列不存在。

前提條件

參數

參數說明
fieldName列名。
query設置查詢類型為ExistsQuery。
getTotalCount是否返回匹配的總行數,默認為false,表示不返回。

返回匹配的總行數會影響查詢性能。

tableName數據表名稱。
indexName多元索引名稱。
columnsToGet是否返回所有列,包含returnAllcolumns設置。

returnAll默認為false,表示不返回所有列,此時可以通過columns指定返回的列;如果未通過columns指定返回的列,則只返回主鍵列。

當設置returnAlltrue時,表示返回所有列。

示例

以下示例用于查詢所有數據中指定列不為空的行。

public static void existQuery(SyncClient syncClient) {
    //非Nested類型字段col_keyword是否存在。
    {
        {
            //非Nested類型字段query示例。
            SearchQuery searchQuery = new SearchQuery();
            ExistsQuery existQuery = new ExistsQuery(); //設置查詢類型為ExistsQuery。
            existQuery.setFieldName("col_keyword");
            searchQuery.setQuery(existQuery);
            SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
            SearchResponse resp = syncClient.search(searchRequest);
        }
        {
            //builder寫法。
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.exists("col_keyword"))
                                    .limit(10)
                                    .build())
                    .build());
        }
    }
    //Nested結構為[{"keyword":"a","long":123}]。
    {
        //Nested類型父字段col_nested是否存在。
        {
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.nested()
                                            .scoreMode(ScoreMode.None)
                                            .path("col_nested")
                                            .query(QueryBuilders.exists("col_nested")))
                                    .limit(10)
                                    .getTotalCount(false)
                                    .build())
                    .build());
        }
        //Nested類型字段col_nested.keyword是否存在。
        {
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.nested()
                                            .scoreMode(ScoreMode.None)
                                            .path("col_nested")
                                            .query(QueryBuilders.exists("col_nested.keyword")))
                                    .limit(10)
                                    .getTotalCount(false)
                                    .build())
                    .build());
        }
    }
}

常見問題

相關文檔