關於springboot整合elasticsearch5.6無法設定fielddata=true來進行聚類的解決方案
專案環境:springboot2.0.3 、elasticsearch5.6.10
先直接看報錯資訊:va.lang.IllegalArgumentException: Fielddata is disabled on text fields by default. Set fielddata=true on [username] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.
前景:博主需要對username來進行聚類統計分析,查詢到熱門使用者的列表資訊,就是elasticsearch的統計功能。但是呢報錯資訊一直提示我要對該欄位設定 fielddata=true,但是我明明已經設定了,如下所示。
但是我程式去組合條件查詢時一直報錯,所以只能著手解決問題。
1. 首先去使用elasticsearch-head-master專案來視覺化管理elastsearch的索引(具體怎麼搭建可以百度查詢,該專案在github
上管理,查詢elasticsearch-head即可得到), blog是我建立的索引的名字
2.檢視索引的資訊,如下檢視
不看不知道,一看嚇一跳,設定的fielddata=true 呢,看來沒有設定成功
3.居然沒成功,那隻能使用原生的elasticsearch的API來進行設定了
請求方式:PUT
路徑:ip地址:9200/索引名/_mapping/文件型別/?pretty
引數(json):
{"文件型別":
{"properties":
{"你要設定的欄位名":
{"type":"text","fielddata":true}
}
}
}
返回結果:true
讓我們再看索引的資訊,就能看到fielddata:rue了