我有以下索引映射 - 一個名為的欄位customFields包含其他欄位,例如firstName,lastName等。
{
"customFields": {
"properties": {
"firstName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"lastName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"address": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"dateOfBirth": {
"type": "date"
},
}
}
}
在我的 Spring 專案中,customFields是一個Map<String, Object>.
該dateOfBirth欄位接受YYYY-MM-DD格式中的值并且是String.
但是,當它保存在 ElasticSearch 上時,型別變為date. 我一直在除錯,但在dateOfBirth發送到 ElasticSearch 之前,我沒有在應用程式中找到型別更改為日期的任何地方。
ElasticSearch 是否有可能在后臺自行更改型別?
uj5u.com熱心網友回復:
您沒有為這些欄位明確定義 Elasticsearch 映射,當 Elasticsearch 看到它們時,它會嘗試將它們與最佳資料型別匹配,因為dateOfBirth即使YYYY-MM-DD它包含在“”中并且您希望它們成為一個text欄位,Elasticsearch 映射date由于它的價值,它被投入使用。
如果您想避免這種情況,您需要 在 Elasticsearch 索引映射中dateOfBirth明確定義text資料型別。
希望這可以幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473325.html
上一篇:SpringDataElasticsearch:ExistsBy*存盤庫方法中拋出ClassCastException
