diff --git a/opensearchapi/api_search.go b/opensearchapi/api_search.go index d207b985..acd4d55c 100644 --- a/opensearchapi/api_search.go +++ b/opensearchapi/api_search.go @@ -99,6 +99,7 @@ type SearchHit struct { Explanation *DocumentExplainDetails `json:"_explanation"` SeqNo *int `json:"_seq_no"` PrimaryTerm *int `json:"_primary_term"` + Highlight map[string][]string `json:"highlight"` } // Suggest is a sub type of SearchResp containing information of the suggest field diff --git a/opensearchapi/api_search_test.go b/opensearchapi/api_search_test.go index 4339971b..0a59f60a 100644 --- a/opensearchapi/api_search_test.go +++ b/opensearchapi/api_search_test.go @@ -181,4 +181,28 @@ func TestSearch(t *testing.T) { require.Nil(t, err) assert.NotEmpty(t, resp.Suggest) }) + + t.Run("request with highlight", func(t *testing.T) { + resp, err := client.Search( + nil, + &opensearchapi.SearchReq{ + Indices: []string{index}, + Body: strings.NewReader(`{ + "query": { + "match": { + "foo": "bar" + } + }, + "highlight": { + "fields": { + "foo": {} + } + } + }`), + }, + ) + require.Nil(t, err) + assert.NotEmpty(t, resp.Hits.Hits) + assert.Equal(t, map[string][]string{"foo": []string{"bar"}}, resp.Hits.Hits[0].Highlight) + }) }