# Changes from 6.0 to 7.0

See [breaking changes](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/breaking-changes-7.0.html).

## 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
    }
}
```