summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/olivere/elastic/search_request.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/olivere/elastic/search_request.go')
-rw-r--r--vendor/github.com/olivere/elastic/search_request.go74
1 files changed, 40 insertions, 34 deletions
diff --git a/vendor/github.com/olivere/elastic/search_request.go b/vendor/github.com/olivere/elastic/search_request.go
index 6f40ff028..8f08e73ff 100644
--- a/vendor/github.com/olivere/elastic/search_request.go
+++ b/vendor/github.com/olivere/elastic/search_request.go
@@ -4,13 +4,16 @@
package elastic
-import "strings"
+import (
+ "encoding/json"
+ "strings"
+)
// SearchRequest combines a search request and its
// query details (see SearchSource).
// It is used in combination with MultiSearch.
type SearchRequest struct {
- searchType string // default in ES is "query_then_fetch"
+ searchType string
indices []string
types []string
routing *string
@@ -28,38 +31,23 @@ func NewSearchRequest() *SearchRequest {
return &SearchRequest{}
}
-// SearchRequest must be one of "query_then_fetch", "query_and_fetch",
-// "scan", "count", "dfs_query_then_fetch", or "dfs_query_and_fetch".
-// Use one of the constants defined via SearchType.
+// SearchRequest must be one of "dfs_query_then_fetch" or
+// "query_then_fetch".
func (r *SearchRequest) SearchType(searchType string) *SearchRequest {
r.searchType = searchType
return r
}
+// SearchTypeDfsQueryThenFetch sets search type to dfs_query_then_fetch.
func (r *SearchRequest) SearchTypeDfsQueryThenFetch() *SearchRequest {
return r.SearchType("dfs_query_then_fetch")
}
-func (r *SearchRequest) SearchTypeDfsQueryAndFetch() *SearchRequest {
- return r.SearchType("dfs_query_and_fetch")
-}
-
+// SearchTypeQueryThenFetch sets search type to query_then_fetch.
func (r *SearchRequest) SearchTypeQueryThenFetch() *SearchRequest {
return r.SearchType("query_then_fetch")
}
-func (r *SearchRequest) SearchTypeQueryAndFetch() *SearchRequest {
- return r.SearchType("query_and_fetch")
-}
-
-func (r *SearchRequest) SearchTypeScan() *SearchRequest {
- return r.SearchType("scan")
-}
-
-func (r *SearchRequest) SearchTypeCount() *SearchRequest {
- return r.SearchType("count")
-}
-
func (r *SearchRequest) Index(indices ...string) *SearchRequest {
r.indices = append(r.indices, indices...)
return r
@@ -130,17 +118,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 +178,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
+ }
}