題記
Elasticsearch 社區有大量關於 Elasticsearch 錯誤和異常的問題。app
深挖這些錯誤背後的緣由,把常見的錯誤積累爲本身的實戰經驗甚至是工具,不只能夠節省咱們的開發和運維時間,並且能夠幫助確保 Elasticsearch 集羣的長期健康運行。運維
常見的異常、緣由和常規最佳實踐拆解以下,這些最佳實踐能夠幫助咱們更有效地識別、最小化定位和處理異常問題。工具
一、 Mapper_parsing_exception
Elasticsearch 依靠映射(Mapping)定義的數據類型處理數據。spa
映射定義了文檔中的字段並指定了它們對應的數據類型,例如日期類型 Date、長整數類型 long 和 字符串類型 text。code
若是索引文檔包含沒有定義數據類型的新字段,Elasticsearch將使用動態映射來估計字段的類型,並在必要時將其從一種類型轉換爲另外一種類型。索引
若是Elasticsearch沒法執行此轉換,它將引起「 mapper_parsing_exception沒法解析」 異常。開發
若是此類異常太多會下降索引吞吐量。文檔
實戰舉例以下:字符串
DELETE mytest_0001 PUT mytest_0001/_doc/1 { "name":"John" } PUT mytest_0001/_doc/2 { "name": { "firstname": "John", "lastname": "doe" } }
爲避免此問題,能夠在建立索引時顯示定義Mapping,明確敲定字段類型。或者能夠使用 _mapping 動態添加新字段映射。it
動態更新索引實戰:
PUT mytest_0001/_mapping { "properties": { "title": { "type": "text" } } }
請注意:雖然能夠經過如上命令動態添加字段,可是不能更改現有字段映射。