錯(cuò)誤與排查)
43 · 常見(jiàn)錯(cuò)誤與排查階段第五階段 / 進(jìn)階與實(shí)戰(zhàn)目標(biāo)把最常踩的坑集中列出遇到報(bào)錯(cuò)能快速定位。1. text 字段不能精確匹配 / 排序 / 聚合現(xiàn)象對(duì)text字段用term查不到或聚合報(bào) fielddata 錯(cuò)誤。原因text會(huì)被分詞term是精確匹配整個(gè)未分詞值text默認(rèn)不建 doc_values不能排序/聚合。解決精確匹配、排序、聚合用keyword或多字段field.keyword。全文搜索用match對(duì)text。# 錯(cuò)term 匹配 text { term: { material: ThinkPad X1 } } # 查不到 # 對(duì)用 keyword 子字段 { term: { material.keyword: ThinkPad X1 } }2. 聚合報(bào) “fielddata is disabled”原因?qū)ext字段做聚合/排序ES 要求開(kāi) fielddata很吃?xún)?nèi)存默認(rèn)關(guān)閉。解決改用該字段的.keyword子字段不要開(kāi) fielddata。3. mapping 沖突 / 字段類(lèi)型無(wú)法修改現(xiàn)象mapper_parsing_exception或加字段時(shí)類(lèi)型沖突。原因ES 的 mapping 一旦確定已有字段類(lèi)型不可改。解決新建索引用正確類(lèi)型 →reindex搬數(shù)據(jù) → 別名切換第 33 篇。4. 深分頁(yè)報(bào)錯(cuò) “Result window is too large”原因from size 10000index.max_result_window默認(rèn)上限。解決用search_after PIT代替深from/size第 40 篇不要盲目調(diào)大上限。5. 查不到剛寫(xiě)入的數(shù)據(jù)原因ES 是近實(shí)時(shí)NRT默認(rèn)refresh_interval1s寫(xiě)完到可搜有延遲。解決測(cè)試可寫(xiě)完帶refreshtrue生產(chǎn)別濫用影響性能。正常業(yè)務(wù)接受 1s 延遲即可。6. bulk 返回 200 但部分?jǐn)?shù)據(jù)沒(méi)進(jìn)去原因bulk整體 HTTP 200 不代表每條成功。解決檢查response.errors()遍歷items()打印失敗項(xiàng)的error().reason()第 31 篇。7. 日期字段解析失敗現(xiàn)象failed to parse date field。原因?qū)懭氲娜掌诟袷胶?mapping 里format不一致。解決統(tǒng)一格式如yyyy-MM-dd寫(xiě) ES 前用to_char(col, YYYY-MM-DD)格式化本項(xiàng)目calcFields_2有此寫(xiě)法。8. terms 聚合 doc_count 不準(zhǔn)原因多分片下terms計(jì)數(shù)是近似的。解決加大shard_size或高基數(shù)場(chǎng)景用composite聚合分頁(yè)第 21 篇。9. scroll 上下文泄漏現(xiàn)象段一直不釋放、資源占用高。原因scroll 用完沒(méi)clearScroll。解決用完必須清理本項(xiàng)目SelectEsDataHandler在末尾clearScroll新場(chǎng)景優(yōu)先 PIT search_after。10. 排查工具箱工具用途GET index/_mapping看字段類(lèi)型排 text/keyword 問(wèn)題GET index/_count確認(rèn)數(shù)據(jù)量 / 刪除前評(píng)估影響POST index/_search {explain:true}看某條為什么這么打分GET _cat/indices?v看索引健康、文檔數(shù)、大小GET _tasks跟蹤update_by_query/reindex異步任務(wù)Kibana Dev Tools先調(diào)通 DSL再翻譯成 Java全系列小結(jié)到這里你應(yīng)該能用「SQL 母語(yǔ)」理解 ESmapping ≈ DDL、term/range/bool≈WHERE、terms/date_histogram≈GROUP BY、bulk≈ 批量 INSERT、別名 ≈ 視圖、search_after≈ 鍵集分頁(yè)。配合本項(xiàng)目AbstractEsHepler/SelectEsDataHandler即可上手改真實(shí)鏈路。下一篇進(jìn)階專(zhuān)題按需選讀