es報錯mapper of different type, current_type 「text」 解決

報錯原文:

Caused by: java.lang.IllegalArgumentException: mapper [personName] of different type, current_type [text], merged_type [keyword]

Error creating bean with name 'ownerOpenRecordRepository':

如果是沒有接觸過elasticsearch的同學可能會不知道如何入手,那麼本文將從零基礎入手解決該問題!

首先第一步,以我們程序員的本能反應,就是字段類型變了,那類型變了怎麼辦?

如果在開發環境:可以通過web管理端kibana訪問es,直接刪除報錯的索引即可,網上說需要重建,其實不需要,因爲是非生產環境,刪就刪了;項目啓動實例化的時候會自動創建的。具體的操作步驟如下;

1、先找到報錯的具體索引(es中的索引可以理解爲數據庫),那如何去找呢?

答案當然是看日誌,es一般會在springboot啓動的時候去連接而發生報錯。在日

志中我們發現實例化Bean的時候會有×××Repository 之類的東西報錯,那就是它了,

2、通過地址

http://118.31.60.110/###-kibana/app/kibana#/dev_tools/console?_g=()

訪問ES的web端進行刪除操作,118.31.60.110爲es所在的服務器公網ip,如果有ngix,那麼該ip則是ngix的IP地址,###-kibana 也是在Nginx中所配置的項。連接成功後如下圖所示:

 

 

3、刪除索引

在console中發送restful風格的http請求,進行刪除操作,以下爲命令

DELETE  ds##record/_search

ds##record爲索引名稱,如果是未找到方法,則直接寫ds##record即可,然後點擊路徑右側的類似播放的按鈕則可刪除成功

4、啓動無報錯

如果是在生產環境,則需要導出該索引,然後刪除重建,最後重新導入,基本套路是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章