我正在尝试使用Olivere's elastic search client for the Go language版本7创建索引。
有一个示例如何在仓库的wiki page上实现该目标。我相信我会按照以下步骤操作:
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]
我知道mapping types have been removed in Elasticsearch V7,但是看不到它应该如何产生上述错误。
我也在相应的仓库中reported这个问题。
最佳答案
原因是"payloads": true
正如该库的创建者在我的Github问题中指出in his answer一样。删除“有效载荷”后:true,它可以工作。他甚至用解决方案创建了一个gist。
请注意,在 flex V6上运行时会收到类似的错误消息,但不小心将golang客户端用于V7。