forked from Shiloh/githaven
56 lines
1.2 KiB
Markdown
56 lines
1.2 KiB
Markdown
|
# 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
|
||
|
}
|
||
|
}
|
||
|
```
|