本文介紹使用多元索引Search介面查不到資料的現象、原因和解決方案。
現象
使用多元索引Search介面查詢資料時,出現查不到資料問題。
原因
- 資料表中的資料未正確同步到多元索引。
- 資料表中的資料以非同步方式同步到多元索引,所以多元索引中的資料存在一定延遲,增量資料同步延遲時間大部分在10秒以內,全量資料同步延遲時間與資料表的資料量成正比。
- 多元索引中的列名區分大小寫,可能造成與資料表中的列名不匹配。例如資料表中列名為ColumnName,多元索引中的對應列名為columnname。
- 多元索引中列的資料類型與資料表中的資料類型不匹配。例如資料表中某列為Integer,多元索引中對應列的資料類型為Keyword。
说明 Table Store的Wide column模型是schema-free的儲存結構,同一個屬性列的值可以有多種資料類型,所以可能出現部分行未同步成功的情況。
- 多元索引中列的資料類型與資料表中的資料格式不匹配。例如資料表中某列資料類型為String,值為-91,100,多元索引中對應列的資料類型為Geopoint。
说明 多元索引中地理位置類型格式為"緯度,經度",且緯度範圍為-90~+90,經度範圍-180~+180,且順序不能寫反。
- 使用的查詢方式錯誤。
- 多元索引中資料類型為Keyword的欄位使用MatchQuery查詢部分值。例如資料表中的資料為"abc",多元索引中對應列的資料類型為Keyword,查詢條件為MatchQuery("ab"),由於Keyword是不可分詞類型,無法使用MatchQuery匹配部分值。
- 查詢條件中參數設定錯誤。例如資料表中的資料為"abc",多元索引中對應列的資料類型為Keyword,查詢條件TermQuery("ab")。
- 多元索引中資料類型為Keyword的欄位使用RangeQuery查詢時條件設定問題。例如資料表中的資料為20,多元索引中對應列的資料類型為Keyword,查詢條件為RangeQuery(>10)。
说明 RangeQuery中不同資料類型的比較規則為Keyword資料類型的值按照字典序比較,Long和Double資料類型的值按照大小比較。
- 分詞器使用錯誤,例如資料表中的資料為"abcdefg",多元索引中對應列的資料類型為Text且設定分詞器為單字分詞,查詢條件為MatchQuery("abcd")。