一分耕耘,一分收获!既然都打开这篇《无法在elasticsearch中保存uuid》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!
问题内容我需要保存一些数据,其中包含一个名为id的字段,它是一个uuid,我使用golang和olivere弹性搜索包,这是我的代码
type space struct {
id string `json:"id"`
name string `json:"name"`
type string `json:"type"`
}
进行一些转换后
js := string(data)
// upto this place there is no error or warnings
ind, err := esclient.Index().
Index(Type).
BodyJson(js).
Do(ctx)
这是它抛出的错误
无法解析 id 文档中类型为 [long] 的字段 [id] 'gpmi8hibcio6ejb-y51d'。字段值预览: 'a5c723c5-1f6e-457f-9556-47b7ebcfd183'
解决方案
错误消息非常清楚,您正在尝试存储 a5c723c5-1f6e-457f-9556-47b7ebcfd183
,它是一个字符串,而不是 id
字段在您的 elasticsearch 映射中映射为 long
。
它甚至还告诉您,您的 _id
文档有一个错误,其值是 gpmi8hibcio6ejb-y51d
,因此您可以找到此文档并更正它。
请发送以下字段的正确值(在您的情况下有效的 long
),以便解决问题。
ID string `json:"id"`
如果您想获取更多代码级别的详细信息,请参阅 elasticsearch 中的 this 代码,该代码解析值并引发异常。
本篇关于《无法在elasticsearch中保存uuid》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!