Elasticsearch 常見的 8 種錯誤及最佳實踐

題記

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"
    }
  }
}

請注意:雖然能夠經過如上命令動態添加字段,可是不能更改現有字段映射。

相關文章
相關標籤/搜索