猿问

使用弹性搜索去更新文档

我使用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都按预期工作。


心有法竹
浏览 162回答 1
1回答

幕布斯7119047

在这里找到解决方案:a-simple-elasticsearch-crud-example-in-golang而不是使用:request := esapi.UpdateRequest{&nbsp; &nbsp; Index:&nbsp; &nbsp; &nbsp; index,&nbsp; &nbsp; DocumentID: id.String(),&nbsp; &nbsp; Body:&nbsp; &nbsp; &nbsp; &nbsp;strings.NewReader(string(body)),}利用request := esapi.UpdateRequest{&nbsp; &nbsp; Index:&nbsp; &nbsp; &nbsp; index,&nbsp; &nbsp; DocumentID: id.String(),&nbsp; &nbsp; Body: bytes.NewReader([]byte(fmt.Sprintf(`{"doc":%s}`, body))),}
随时随地看视频慕课网APP

相关分类

Go
我要回答