1. 程式人生 > >關於springboot整合elasticsearch5.6無法設定fielddata=true來進行聚類的解決方案

關於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了

*************然後再做聚類操作時就不會出現報錯了,哈哈哈*****************************