我使用go-elasticsearch作為彈性搜索客戶端。我嘗試使用此處的代碼來更新文檔elastic/go-elasticsearch/api.update.go但是使用來自 GitHub 的相同代碼,我得到:[UpdateRequest] unknown field [Title]到目前為止,我只有一個看起來像這樣的文件{ "took": 3, "timed_out": false, "_shards": { "total": 4, "successful": 4, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1.0, "hits": [ { "_index": "posts", "_type": "_doc", "_id": "fc87941f-dc82-4fdb-9e04-460830e5f3ab", "_score": 1.0, "_source": { "Title": "one two three2", "Done": false, "Created": "2022-02-09T11:51:59.027356+01:00", "Updated": null } } ] }}我的去功能:func (postRepository) Update(id uuid.UUID, input inputs.Post) error { channel := make(chan error) go func() { post := entities.Post{ Title: "title updated", } body, err := json.Marshal(post) if err != nil { channel <- err } request := esapi.UpdateRequest{ Index: index, DocumentID: id.String(), Body: strings.NewReader(string(body)), } response, err := request.Do(context.Background(), data.ElasticSearchClient) if err != nil { channel <- err } defer response.Body.Close()此外,這是唯一不起作用的功能,其他功能如:AddDocument, RemoveDocument,GetDocuments都按預期工作。
1 回答
幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
在這里找到解決方案:a-simple-elasticsearch-crud-example-in-golang
而不是使用:
request := esapi.UpdateRequest{
Index: index,
DocumentID: id.String(),
Body: strings.NewReader(string(body)),
}
利用
request := esapi.UpdateRequest{
Index: index,
DocumentID: id.String(),
Body: bytes.NewReader([]byte(fmt.Sprintf(`{"doc":%s}`, body))),
}
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消
