go - 无法在elasticsearch中保存UUID

标签 go elasticsearch

我需要保存一些数据,其中包括一个名为ID的字段,这是一个使用golang和 olivere flex 搜索包的 uuid im,这是我的代码

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)
这是它引发的错误

failed to parse field [id] of type [long] in document with id 'gPmI8HIBCIO6Ejb-Y51D'. Preview of field's value: 'a5c723c5-1f6e-457f-9556-47b7ebcfd183'

最佳答案

该错误消息非常清楚,您正在尝试存储a5c723c5-1f6e-457f-9556-47b7ebcfd183(它是一个字符串),只要id字段在您的Elasticsearch映射中映射为long即可。
甚至还告诉您,使用_id作为值的gPmI8HIBCIO6Ejb-Y51D文档出错,因此您可以找到此文档并进行更正。
请根据您的情况发送以下字段的正确值,即有效的long,以解决此问题。

ID      string   `json:"id"`
如果您想获取更多代码级别的详细信息,请引用Elasticsearch的this代码,该代码将解析值并引发异常。

关于go - 无法在elasticsearch中保存UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62594940/

相关文章:

database - 如何使用 docker-compose 运行 golang-migrate?

windows - 在更新之前删除现有的 Go 安装?

elasticsearch - 使用elastic4s的Elasticsearch聚合组

search - 将 ElasticSearch 聚合限制为前 n 个查询结果

Go 系统调用 EnumProcessModules

go - 从代码内与外部应用程序交互

go - 如何将 Go dep 与 GitLab 子组一起使用

elasticsearch - 具有多值字段geo_point的arcDistance脚本字段过滤器的行为是什么?

elasticsearch - 在Elasticsearch中增强查询

elasticsearch - Elasticsearch 中的反义词过滤