summaryrefslogtreecommitdiffstats
path: root/vendor/gopkg.in/olivere/elastic.v5/search_request.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gopkg.in/olivere/elastic.v5/search_request.go')
-rw-r--r--vendor/gopkg.in/olivere/elastic.v5/search_request.go49
1 files changed, 35 insertions, 14 deletions
diff --git a/vendor/gopkg.in/olivere/elastic.v5/search_request.go b/vendor/gopkg.in/olivere/elastic.v5/search_request.go
index 6f40ff028..7ee4ce82c 100644
--- a/vendor/gopkg.in/olivere/elastic.v5/search_request.go
+++ b/vendor/gopkg.in/olivere/elastic.v5/search_request.go
@@ -4,7 +4,10 @@
package elastic
-import "strings"
+import (
+ "encoding/json"
+ "strings"
+)
// SearchRequest combines a search request and its
// query details (see SearchSource).
@@ -130,17 +133,7 @@ func (r *SearchRequest) SearchSource(searchSource *SearchSource) *SearchRequest
}
func (r *SearchRequest) Source(source interface{}) *SearchRequest {
- switch v := source.(type) {
- case *SearchSource:
- src, err := v.Source()
- if err != nil {
- // Do not do anything in case of an error
- return r
- }
- r.source = src
- default:
- r.source = source
- }
+ r.source = source
return r
}
@@ -200,6 +193,34 @@ func (r *SearchRequest) header() interface{} {
// Body is used e.g. by MultiSearch to get information about the search body
// of one SearchRequest.
// See https://www.elastic.co/guide/en/elasticsearch/reference/6.0/search-multi-search.html
-func (r *SearchRequest) Body() interface{} {
- return r.source
+func (r *SearchRequest) Body() (string, error) {
+ switch t := r.source.(type) {
+ default:
+ body, err := json.Marshal(r.source)
+ if err != nil {
+ return "", err
+ }
+ return string(body), nil
+ case *SearchSource:
+ src, err := t.Source()
+ if err != nil {
+ return "", err
+ }
+ body, err := json.Marshal(src)
+ if err != nil {
+ return "", err
+ }
+ return string(body), nil
+ case json.RawMessage:
+ return string(t), nil
+ case *json.RawMessage:
+ return string(*t), nil
+ case string:
+ return t, nil
+ case *string:
+ if t != nil {
+ return *t, nil
+ }
+ return "{}", nil
+ }
}