首页 > 解决方案 > Golang Elasticsearch Olivere:根映射定义具有不受支持的参数

问题描述

我正在尝试使用Olivere 的 Go 语言版本 7 的弹性搜索客户端创建一个索引。在 repo 的wiki 页面上有一个示例如何实现这一点。我相信我正在遵循以下步骤:

client, err := elastic.NewClient()
if err != nil {
    // Handle error
    panic(err)
}

// Create a new index.
mapping := `{
    "settings":{
        "number_of_shards":1,
        "number_of_replicas":0
    },
    "mappings":{
        "properties":{
            "tags":{
                "type":"keyword"
            },
            "location":{
                "type":"geo_point"
            },
            "suggest_field":{
                "type":"completion",
                "payloads":true
            }
        }
    }
}`

ctx := context.Background()
createIndex, err := client.CreateIndex("twitter").BodyString(mapping).Do(ctx)
if err != nil {
    // Handle error
    panic(err)
}
if !createIndex.Acknowledged {
    // Not acknowledged
}

然而我得到一个错误:

Failed to parse mapping [properties]: Root mapping definition has unsupported parameters: [location : {type=geo_point}] [suggest_field : {payloads=true, type=completion}] [tags : {type=keyword}] [type=mapper_parsing_exception]

我知道映射类型已在 Elasticsearch V7 中删除,但看不到这应该如何产生上述错误。

我也在相应的仓库中报告了这个问题。

标签: goelasticsearch

解决方案


原因是

"payloads": true

正如图书馆的创建者在他对我的 Github 问题的回答中指出的那样。删除“有效负载”后:true,它可以工作。他甚至创造了一个解决方案的要点

请注意,当您在 Elastic V6 上运行时会收到类似的错误消息,但不小心使用了 V7 的 golang 客户端。


推荐阅读