多元索引支援豐富的日期時間(Date)類型,您可以將資料表中整型(Integer)或者字串(String)類型的資料在多元索引中映射為日期資料類型。當通過多元索引進行範圍查詢時,使用日期資料類型查詢會比使用字串類型查詢更快。
精度和範圍
日期時間類型支援的最大精度是納秒,日期時間類型資料的取值範圍為["1970-01-01 00:00:00.000000000", "2262-04-11 23:47:16.854775807"]
。
日期格式
當資料表中的Integer或String類型映射到多元索引的Date類型時,日期時間類型的格式支援進行設定,詳細說明請參見下表。
資料表中欄位類型 | 多元索引中日期時間類型的格式(Format) |
整型(Integer) | 支援選擇預定義格式。預定義格式包括如下選項:
|
字串(String) | 支援自訂格式。常用日期格式如下:
其中yyyy表示4位的年份,MM表示月份,dd表示天,HH表示24小時制,mm表示分鐘,ss表示秒,SSS表示秒的精度,X表示時區位移量。 關於自訂日期格式規則的更多資訊,請參見自訂日期格式規則。 |
自訂日期格式規則
符號 | 含義 | 樣本 |
y | 年份 |
|
M | 月份 |
|
d | 月分中的第幾天 |
|
a | 上午(AM)或者下午(PM)標記 |
|
K | AM或者PM中的小時,取值範圍為0~11 |
|
H | 一天中的小時,取值範圍為0~23 |
|
m | 分鐘 |
|
s | 秒 |
|
S | 秒的精度,支援1~9個數字 |
|
X | 時區位移 |
|
x | 時區位移 |
|
' | 自訂符號限定符 | A~Z和a~z字元為特殊符號,當添加自訂字串時,需要使用單引號包括。 重要 空格和短劃線(-)不需要使用單引號包括。 |
'' | 轉義單引號 | '' |
日期格式合法性驗證
使用日期格式查詢資料前,建議您通過多元索引的精確查詢(TermQuery)或者JDK8及以上版本的DateTimeFormatter方式驗證日期格式的合法性。
通過TermQuery進行驗證
建立包含指定日期格式的多元索引後,使用精確查詢(TermQuery)進行日期格式的合法性驗證。如果代碼執行不報錯,則日期格式正確。
public void testDateFormat(SyncClient client, String tableName, String indexName) {
// 建立多元索引。
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("col_date", FieldType.DATE)
.setIndex(true)
.setEnableSortAndAgg(true)
.setDateFormats(Arrays.asList("yyyy-MM-dd HH:mm:ss.SSS"))
));
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
// 驗證日期格式。如果查詢不報錯,則日期格式正確。
client.search(SearchRequest.newBuilder()
.tableName(tableName)
.indexName(indexName)
.searchQuery(SearchQuery
.newBuilder()
.query(QueryBuilders.term("col_date", "2022-12-12 12:10:03.123")).build())
.build());
}
通過DateTimeFormatter進行驗證
此方式在測試某些時區時可能存在誤差。
請確保已安裝JDK8及以上版本的開發環境。
通過JDK的DateTimeFormatter方法驗證日期類型的合法性。如果代碼執行不報錯,則日期格式正確。
import java.time.format.DateTimeFormatter;
public void testFormatByJdk8() {
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS").parse("2022-12-12 12:10:03.123");
}
相關文檔
當要使用日期時間類型時,您可以通過控制台或者SDK方式在建立多元索引時配置日期時間類型的欄位。具體操作,請參見建立多元索引。
多元索引查詢類型包括精確查詢、多詞精確查詢、全匹配查詢、匹配查詢、短語匹配查詢、首碼查詢、範圍查詢、萬用字元查詢、基於分詞的萬用字元查詢、多條件組合查詢、地理位置查詢、巢狀型別查詢、向量檢索介紹與使用和列存在性查詢,您可以選擇合適的查詢類型進行多維度資料查詢。
如果要對結果集進行排序或者翻頁,您可以使用排序和翻頁功能來實現。具體操作,請參見排序和翻頁。
如果要按照某一列對結果集做摺疊,使對應類型的資料在結果展示中只出現一次,您可以使用摺疊(去重)功能來實現。具體操作,請參見摺疊(去重)。
如果要進行資料分析,例如求最值、求和、統計行數等,您可以使用Search介面的統計彙總功能或者SQL查詢來實現。具體操作,請參見統計彙總和SQL查詢。
如果要快速匯出資料,而不關心整個結果集的順序時,您可以使用ParallelScan介面和ComputeSplits介面實現多並發匯出資料。具體操作,請參見並發匯出資料。