Browse Source

tableStore操作示例

luyanwen-001 4 years ago
parent
commit
10a4abb0fe

+ 134 - 0
abi-cloud-qr-platform-server/src/test/java/com/abi/qms/platform/TableStoreXTest.java

@@ -0,0 +1,134 @@
+package com.abi.qms.platform;
+
+import com.alicloud.openservices.tablestore.SyncClient;
+import com.alicloud.openservices.tablestore.model.ColumnValue;
+import com.alicloud.openservices.tablestore.model.search.*;
+import com.alicloud.openservices.tablestore.model.search.query.BoolQuery;
+import com.alicloud.openservices.tablestore.model.search.query.MatchQuery;
+import com.alicloud.openservices.tablestore.model.search.query.RangeQuery;
+import com.alicloud.openservices.tablestore.model.search.query.TermsQuery;
+import com.alicloud.openservices.tablestore.model.search.sort.FieldSort;
+import com.alicloud.openservices.tablestore.model.search.sort.Sort;
+import com.alicloud.openservices.tablestore.model.search.sort.SortOrder;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.Arrays;
+
+/**
+ * @author ludashi
+ * @data 2021/5/27 15:35
+ */
+@SpringBootTest
+public class TableStoreXTest {
+    @Value("${tableStore.endPoint}")
+    private String endPoint;
+
+    @Value("${tableStore.accessKeyId}")
+    private String accessKeyId;
+
+    @Value("${tableStore.accessKeySecret}")
+    private String accessKeySecret;
+
+    @Value("${tableStore.instanceName}")
+    private String instanceName;
+
+    /**
+     * 创建 tableStore 链接 SyncClient
+     * @return
+     */
+    public SyncClient client() {
+        return new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
+    }
+
+    /**
+     * 创建多元索引
+     */
+    @Test
+    public void createSearchIndex() {
+        CreateSearchIndexRequest request = new CreateSearchIndexRequest();
+        //设置数据表名称。
+        request.setTableName("qr_code");
+        //设置多元索引名称。
+        request.setIndexName("index_code_index");
+        IndexSchema indexSchema = new IndexSchema();
+        //设置字段名和类型。
+        //设置开启索引。
+        indexSchema.setFieldSchemas(Arrays.asList( new FieldSchema("code_index", FieldType.LONG).setIndex(true).setEnableSortAndAgg(true)));
+        request.setIndexSchema(indexSchema);
+        //调用client创建多元索引。
+        client().createSearchIndex(request);
+    }
+
+    /**
+     * 条件查询 && 分页
+     */
+    @Test
+    public void query(){
+        SearchQuery searchQuery = new SearchQuery();
+        //设置查询类型为TermsQuery。
+        TermsQuery termsQuery = new TermsQuery();
+        //设置要匹配的字段。
+        termsQuery.setFieldName("package_id");
+        //设置要匹配的值。
+        termsQuery.addTerm(ColumnValue.fromString("1"));
+        //设置要匹配的值。
+//        termsQuery.addTerm(ColumnValue.fromString(""));
+        searchQuery.setLimit(20);
+        searchQuery.setOffset(2);
+        searchQuery.setQuery(termsQuery);
+        //设置返回匹配的总行数。
+        //searchQuery.setGetTotalCount(true);
+
+        SearchRequest searchRequest = new SearchRequest("qr_code", "index_package_id", searchQuery);
+        //通过设置columnsToGet参数可以指定返回的列或返回所有列,如果不设置此参数,则默认只返回主键列。
+        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
+        //设置为返回所有列。
+        columnsToGet.setReturnAll(true);
+        //设置为返回指定列。
+//        columnsToGet.setColumns(Arrays.asList(""));
+        searchRequest.setColumnsToGet(columnsToGet);
+
+        SearchResponse resp = client().search(searchRequest);
+        //打印匹配到的总行数,非返回行数。
+        System.out.println("TotalCount: " + resp.getTotalCount());
+        System.out.println("Row: " + resp.getRows());
+    }
+
+    /**
+     * 多条件查询-同时满足
+     */
+    @Test
+    public void rangeQuery(){
+        SearchQuery searchQuery = new SearchQuery();
+        //设置查询类型为RangeQuery。
+        RangeQuery rangeQuery = new RangeQuery();
+        //设置要匹配的字段。
+        rangeQuery.setFieldName("code_index");
+        //设置该字段的范围条件为大于1。
+        rangeQuery.greaterThan(ColumnValue.fromLong(1));
+        //设置该字段的范围条件为小于9。
+        //rangeQuery.lessThan(ColumnValue.fromLong(100));
+        searchQuery.setGetTotalCount(true);
+        searchQuery.setQuery(rangeQuery);
+        //设置按照  列 逆序排序。
+        FieldSort fieldSort = new FieldSort("code_index");
+        fieldSort.setOrder(SortOrder.DESC);
+        searchQuery.setSort(new Sort(Arrays.asList((Sort.Sorter)fieldSort)));
+        //设置返回匹配的总行数。
+        //searchQuery.setGetTotalCount(true);
+        SearchRequest searchRequest = new SearchRequest("qr_code", "index_code_index", searchQuery);
+        //通过设置columnsToGet参数可以指定返回的列或返回所有列,如果不设置此参数,则默认只返回主键列。
+        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
+        //设置为返回所有列。
+        columnsToGet.setReturnAll(true);
+        //设置为返回指定列。
+        //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2"));
+        searchRequest.setColumnsToGet(columnsToGet);
+        SearchResponse resp = client().search(searchRequest);
+        //打印匹配到的总行数,非返回行数。
+        //System.out.println("TotalCount: " + resp.getTotalCount());
+        System.out.println("Row: " + resp.getRows());
+    }
+}