當使用多元索引Search介面查不到資料時,一般是由資料表中的資料未正確同步到多元索引或使用的查詢方式錯誤導致的,請檢查資料表中的資料是否已正確同步到多元索引以及使用的查詢方式是否正確。
問題現象
使用多元索引Search介面查詢資料時,出現查不到資料問題。
可能原因
原因1:資料表中的資料未正確同步到多元索引
情況1:資料還未同步到多元索引中。資料表中的資料以非同步方式同步到多元索引,所以多元索引中的資料存在一定延遲。
情況2:多元索引中的列名區分大小寫,可能造成與資料表中的列名不匹配。例如資料表中列名為ColumnName,多元索引中對應列名為columnname。
情況3:多元索引中列的資料類型與資料表中列的資料類型不匹配。例如資料表中某列的資料類型為Integer,多元索引中對應列的資料類型為Keyword。
說明Table Store的Wide column模型是schema-free的儲存結構,同一個屬性列的值可以有多種資料類型,所以可能出現部分行未同步成功的情況。
情況4:多元索引中列的資料類型與資料表中列的資料格式不匹配。例如資料表中某列的資料類型為String,列值為
-91,100
,多元索引中對應列的資料類型為Geopoint、Nested或Vector。說明多元索引中Geopoint的格式為
緯度,經度
,且緯度範圍為-90~+90
,經度範圍-180~+180
,且順序不能寫反。多元索引中Nested的格式為JSON數組,例如
[{"tagName":"tag1", "score":0.8}, {"tagName":"tag2", "score":0.2}]
。多元索引中Vector的格式為Float32數組,且數組長度必須與向量欄位的維度配置一致,例如
[1,5.1,4.7,0.08]
的向量維度為4。
原因2:使用的查詢方式錯誤
情況1:多元索引中資料類型為Keyword的列使用MatchQuery查詢部分值。例如資料表中的列值為
"abc"
,多元索引中對應列的資料類型為Keyword,查詢條件為MatchQuery("ab")
。由於Keyword是不可分詞類型,無法使用MatchQuery匹配部分值。情況2:查詢條件中參數設定錯誤。例如資料表中的列值為
"abc"
,多元索引中對應列的資料類型為Keyword,查詢條件為TermQuery("ab")
。情況3:使用RangeQuery查詢多元索引中Keyword類型的列時條件設定存在問題。例如資料表中的列值為20,多元索引中對應列的資料類型為Keyword,查詢條件為
RangeQuery(>10)
。說明RangeQuery中不同資料類型的比較規則為Keyword資料類型的值按照字典序比較,Long和Double資料類型的值按照大小比較。
情況4:分詞器使用錯誤。例如資料表中的列資料為
"abcdefg"
,多元索引中對應列的資料類型為Text且設定分詞器為單字分詞,查詢條件為MatchQuery("abcd")
。
解決方案
處理資料表中的資料未正確同步到多元索引問題
確保資料表中資料已同步到多元索引。增量資料同步延遲時間大部分在3秒以內,全量資料同步延遲時間與資料表的資料量成正比。
確保建立多元索引時設定的列名和資料類型與資料表的對應關係正確,寫入資料表中的資料格式與多元索引中的資料類型匹配。更多資訊,請參見基礎資料類型及映射、字串類型、日期時間類型或數組和巢狀型別。
說明如果多元索引中的配置存在問題,請通過重新建立多元索引或動態修改schema功能進行修改。具體操作,請參見建立多元索引和動態修改schema。
使用向量檢索功能時,確保多元索引中向量欄位的屬性(維度、資料類型和距離度量演算法)和向量產生(embedded)系統中產生的向量屬性一致。更多資訊,請參見向量檢索。
處理使用的查詢方式錯誤問題