service/vendor/github.com/olivere/elastic/v7/CHANGELOG-7.0.md

1.2 KiB

Changes from 6.0 to 7.0

See breaking changes.

SearchHit.Source changed from *json.RawMessage to json.RawMessage

The SearchHit structure changed from

// SearchHit is a single hit.
type SearchHit struct {
	...
	Source         *json.RawMessage               `json:"_source,omitempty"`         // stored document source
	...
}

to

// SearchHit is a single hit.
type SearchHit struct {
	...
	Source         json.RawMessage                `json:"_source,omitempty"`         // stored document source
	...
}

As json.RawMessage is a []byte, there is no need to specify it as *json.RawMessage as json.RawMessage is perfectly ok to represent a nil value.

So when deserializing the search hits, you need to change your code from:

for _, hit := range searchResult.Hits.Hits {
    var doc Doc
    err := json.Unmarshal(*hit.Source, &doc) // notice the * here
    if err != nil {
        // Deserialization failed
    }
}

to

for _, hit := range searchResult.Hits.Hits {
    var doc Doc
    err := json.Unmarshal(hit.Source, &doc) // it's missing here
    if err != nil {
        // Deserialization failed
    }
}