|
@@ -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());
|
|
|
+ }
|
|
|
+}
|