作者:阿什顿安抚_343 | 来源:互联网 | 2023-05-29 13:50
我正在尝试使用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。
请注意,在弹性V6上运行时会收到类似的错误消息,但不小心将golang客户端用于V7。