// buildURL builds the URL for the operation. func (s *ClusterStatsService) buildURL() (string, url.Values, error) { // Build URL var err error var path string if len(s.nodeId) > 0 { path, err = uritemplates.Expand("/_cluster/stats/nodes/{node_id}", map[string]string{ "node_id": strings.Join(s.nodeId, ","), }) if err != nil { return "", url.Values{}, err } } else { path, err = uritemplates.Expand("/_cluster/stats", map[string]string{}) if err != nil { return "", url.Values{}, err } } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.flatSettings != nil { params.Set("flat_settings", fmt.Sprintf("%v", *s.flatSettings)) } if s.human != nil { params.Set("human", fmt.Sprintf("%v", *s.human)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesGetService) buildURL() (string, url.Values, error) { var err error var path string var index []string if len(s.index) > 0 { index = s.index } else { index = []string{"_all"} } if len(s.feature) > 0 { // Build URL path, err = uritemplates.Expand("/{index}/{feature}", map[string]string{ "index": strings.Join(index, ","), "feature": strings.Join(s.feature, ","), }) } else { // Build URL path, err = uritemplates.Expand("/{index}", map[string]string{ "index": strings.Join(index, ","), }) } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } if s.flatSettings != nil { params.Set("flat_settings", fmt.Sprintf("%v", *s.flatSettings)) } if s.human != nil { params.Set("human", fmt.Sprintf("%v", *s.human)) } if s.local != nil { params.Set("local", fmt.Sprintf("%v", *s.local)) } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesStatsService) buildURL() (string, url.Values, error) { var err error var path string if len(s.index) > 0 && len(s.metric) > 0 { path, err = uritemplates.Expand("/{index}/_stats/{metric}", map[string]string{ "index": strings.Join(s.index, ","), "metric": strings.Join(s.metric, ","), }) } else if len(s.index) > 0 { path, err = uritemplates.Expand("/{index}/_stats", map[string]string{ "index": strings.Join(s.index, ","), }) } else if len(s.metric) > 0 { path, err = uritemplates.Expand("/_stats/{metric}", map[string]string{ "metric": strings.Join(s.metric, ","), }) } else { path = "/_stats" } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if len(s.groups) > 0 { params.Set("groups", strings.Join(s.groups, ",")) } if s.human != nil { params.Set("human", fmt.Sprintf("%v", *s.human)) } if s.level != "" { params.Set("level", s.level) } if len(s.types) > 0 { params.Set("types", strings.Join(s.types, ",")) } if len(s.completionFields) > 0 { params.Set("completion_fields", strings.Join(s.completionFields, ",")) } if len(s.fielddataFields) > 0 { params.Set("fielddata_fields", strings.Join(s.fielddataFields, ",")) } if len(s.fields) > 0 { params.Set("fields", strings.Join(s.fields, ",")) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesPutTemplateService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/_template/{name}", map[string]string{ "name": s.name, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.order != nil { params.Set("order", fmt.Sprintf("%v", s.order)) } if s.create != nil { params.Set("create", fmt.Sprintf("%v", *s.create)) } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.masterTimeout != "" { params.Set("master_timeout", s.masterTimeout) } if s.flatSettings != nil { params.Set("flat_settings", fmt.Sprintf("%v", *s.flatSettings)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *ExistsService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}/{type}/{id}", map[string]string{ "id": s.id, "index": s.index, "type": s.typ, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.realtime != nil { params.Set("realtime", fmt.Sprintf("%v", *s.realtime)) } if s.refresh != nil { params.Set("refresh", fmt.Sprintf("%v", *s.refresh)) } if s.routing != "" { params.Set("routing", s.routing) } if s.parent != "" { params.Set("parent", s.parent) } if s.preference != "" { params.Set("preference", s.preference) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesGetTemplateService) buildURL() (string, url.Values, error) { // Build URL var err error var path string if len(s.name) > 0 { path, err = uritemplates.Expand("/_template/{name}", map[string]string{ "name": strings.Join(s.name, ","), }) } else { path = "/_template" } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.flatSettings != nil { params.Set("flat_settings", fmt.Sprintf("%v", *s.flatSettings)) } if s.local != nil { params.Set("local", fmt.Sprintf("%v", *s.local)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesExistsTypeService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}/{type}", map[string]string{ "index": strings.Join(s.index, ","), "type": strings.Join(s.typ, ","), }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } if s.local != nil { params.Set("local", fmt.Sprintf("%v", *s.local)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesOpenService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}/_open", map[string]string{ "index": s.index, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.masterTimeout != "" { params.Set("master_timeout", s.masterTimeout) } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *PutMappingService) buildURL() (string, url.Values, error) { var err error var path string // Build URL: Typ MUST be specified and is verified in Validate. if len(s.index) > 0 { path, err = uritemplates.Expand("/{index}/_mapping/{type}", map[string]string{ "index": strings.Join(s.index, ","), "type": s.typ, }) } else { path, err = uritemplates.Expand("/_mapping/{type}", map[string]string{ "type": s.typ, }) } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } if s.ignoreConflicts != nil { params.Set("ignore_conflicts", fmt.Sprintf("%v", *s.ignoreConflicts)) } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.masterTimeout != "" { params.Set("master_timeout", s.masterTimeout) } return path, params, nil }
func (s *OptimizeService) Do() (*OptimizeResult, error) { // Build url path := "/" // Indices part indexPart := make([]string, 0) for _, index := range s.indices { index, err := uritemplates.Expand("{index}", map[string]string{ "index": index, }) if err != nil { return nil, err } indexPart = append(indexPart, index) } if len(indexPart) > 0 { path += strings.Join(indexPart, ",") } path += "/_optimize" // Parameters params := make(url.Values) if s.maxNumSegments != nil { params.Set("max_num_segments", fmt.Sprintf("%d", *s.maxNumSegments)) } if s.onlyExpungeDeletes != nil { params.Set("only_expunge_deletes", fmt.Sprintf("%v", *s.onlyExpungeDeletes)) } if s.flush != nil { params.Set("flush", fmt.Sprintf("%v", *s.flush)) } if s.waitForMerge != nil { params.Set("wait_for_merge", fmt.Sprintf("%v", *s.waitForMerge)) } if s.force != nil { params.Set("force", fmt.Sprintf("%v", *s.force)) } if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } // Get response res, err := s.client.PerformRequest("POST", path, params, nil) if err != nil { return nil, err } // Return result ret := new(OptimizeResult) if err := json.Unmarshal(res.Body, ret); err != nil { return nil, err } return ret, nil }
// buildURL builds the URL for the operation. func (s *GetService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}/{type}/{id}", map[string]string{ "id": s.id, "index": s.index, "type": s.typ, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.routing != "" { params.Set("routing", s.routing) } if s.parent != "" { params.Set("parent", s.parent) } if s.preference != "" { params.Set("preference", s.preference) } if len(s.fields) > 0 { params.Set("fields", strings.Join(s.fields, ",")) } if s.refresh != nil { params.Set("refresh", fmt.Sprintf("%v", *s.refresh)) } if s.version != nil { params.Set("version", fmt.Sprintf("%v", s.version)) } if s.versionType != "" { params.Set("version_type", s.versionType) } if s.realtime != nil { params.Set("realtime", fmt.Sprintf("%v", *s.realtime)) } if s.ignoreErrorsOnGeneratedFields != nil { params.Add("ignore_errors_on_generated_fields", fmt.Sprintf("%v", *s.ignoreErrorsOnGeneratedFields)) } if s.fsc != nil { for k, values := range s.fsc.Query() { params.Add(k, strings.Join(values, ",")) } } return path, params, nil }
// url returns the URL part of the document request. func (b *UpdateService) url() (string, url.Values, error) { // Build url path := "/{index}/{type}/{id}/_update" path, err := uritemplates.Expand(path, map[string]string{ "index": b.index, "type": b.typ, "id": b.id, }) if err != nil { return "", url.Values{}, err } // Parameters params := make(url.Values) if b.pretty { params.Set("pretty", "true") } if b.routing != "" { params.Set("routing", b.routing) } if b.parent != "" { params.Set("parent", b.parent) } if b.timeout != "" { params.Set("timeout", b.timeout) } if b.refresh != nil { params.Set("refresh", fmt.Sprintf("%v", *b.refresh)) } if b.replicationType != "" { params.Set("replication", b.replicationType) } if b.consistencyLevel != "" { params.Set("consistency", b.consistencyLevel) } if len(b.fields) > 0 { params.Set("fields", strings.Join(b.fields, ",")) } if b.version != nil { params.Set("version", fmt.Sprintf("%d", *b.version)) } if b.versionType != "" { params.Set("version_type", b.versionType) } if b.retryOnConflict != nil { params.Set("retry_on_conflict", fmt.Sprintf("%v", *b.retryOnConflict)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *ClusterHealthService) buildURL() (string, url.Values, error) { // Build URL var err error var path string if len(s.indices) > 0 { path, err = uritemplates.Expand("/_cluster/health/{index}", map[string]string{ "index": strings.Join(s.indices, ","), }) } else { path = "/_cluster/health" } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.level != "" { params.Set("level", s.level) } if s.local != nil { params.Set("local", fmt.Sprintf("%v", *s.local)) } if s.masterTimeout != "" { params.Set("master_timeout", s.masterTimeout) } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.waitForActiveShards != nil { params.Set("wait_for_active_shards", fmt.Sprintf("%v", s.waitForActiveShards)) } if s.waitForNodes != "" { params.Set("wait_for_nodes", s.waitForNodes) } if s.waitForRelocatingShards != nil { params.Set("wait_for_relocating_shards", fmt.Sprintf("%v", s.waitForRelocatingShards)) } if s.waitForStatus != "" { params.Set("wait_for_status", s.waitForStatus) } return path, params, nil }
// Do executes the operation. func (b *IndicesCreateService) Do() (*IndicesCreateResult, error) { if b.index == "" { return nil, errors.New("missing index name") } // Build url path, err := uritemplates.Expand("/{index}", map[string]string{ "index": b.index, }) if err != nil { return nil, err } params := make(url.Values) if b.pretty { params.Set("pretty", "1") } if b.masterTimeout != "" { params.Set("master_timeout", b.masterTimeout) } if b.timeout != "" { params.Set("timeout", b.timeout) } // Setup HTTP request body var body interface{} if b.bodyJson != nil { body = b.bodyJson } else { body = b.bodyString } // Get response res, err := b.client.PerformRequest("PUT", path, params, body) if err != nil { return nil, err } ret := new(IndicesCreateResult) if err := json.Unmarshal(res.Body, ret); err != nil { return nil, err } return ret, nil }
func (s *RefreshService) Do() (*RefreshResult, error) { // Build url path := "/" // Indices part indexPart := make([]string, 0) for _, index := range s.indices { index, err := uritemplates.Expand("{index}", map[string]string{ "index": index, }) if err != nil { return nil, err } indexPart = append(indexPart, index) } if len(indexPart) > 0 { path += strings.Join(indexPart, ",") } path += "/_refresh" // Parameters params := make(url.Values) if s.force != nil { params.Set("force", fmt.Sprintf("%v", *s.force)) } if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } // Get response res, err := s.client.PerformRequest("POST", path, params, nil) if err != nil { return nil, err } // Return result ret := new(RefreshResult) if err := json.Unmarshal(res.Body, ret); err != nil { return nil, err } return ret, nil }
// buildURL builds the URL for the operation. func (s *ClusterStateService) buildURL() (string, url.Values, error) { // Build URL metrics := strings.Join(s.metrics, ",") if metrics == "" { metrics = "_all" } indices := strings.Join(s.indices, ",") if indices == "" { indices = "_all" } path, err := uritemplates.Expand("/_cluster/state/{metrics}/{indices}", map[string]string{ "metrics": metrics, "indices": indices, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } if s.flatSettings != nil { params.Set("flat_settings", fmt.Sprintf("%v", *s.flatSettings)) } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.local != nil { params.Set("local", fmt.Sprintf("%v", *s.local)) } if s.masterTimeout != "" { params.Set("master_timeout", s.masterTimeout) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesExistsTemplateService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/_template/{name}", map[string]string{ "name": s.name, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.local != nil { params.Set("local", fmt.Sprintf("%v", *s.local)) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *DeleteService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}/{type}/{id}", map[string]string{ "index": s.index, "type": s.typ, "id": s.id, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.refresh != nil { params.Set("refresh", fmt.Sprintf("%v", *s.refresh)) } if s.replication != "" { params.Set("replication", s.replication) } if s.routing != "" { params.Set("routing", s.routing) } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.version != nil { params.Set("version", fmt.Sprintf("%v", s.version)) } if s.versionType != "" { params.Set("version_type", s.versionType) } if s.consistency != "" { params.Set("consistency", s.consistency) } if s.parent != "" { params.Set("parent", s.parent) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *GetTemplateService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/_search/template/{id}", map[string]string{ "id": s.id, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.version != nil { params.Set("version", fmt.Sprintf("%v", s.version)) } if s.versionType != "" { params.Set("version_type", s.versionType) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesDeleteService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}", map[string]string{ "index": strings.Join(s.index, ","), }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.masterTimeout != "" { params.Set("master_timeout", s.masterTimeout) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *IndicesFlushService) buildURL() (string, url.Values, error) { // Build URL var err error var path string if len(s.index) > 0 { path, err = uritemplates.Expand("/{index}/_flush", map[string]string{ "index": strings.Join(s.index, ","), }) } else { path = "/_flush" } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.force != nil { params.Set("force", fmt.Sprintf("%v", *s.force)) } if s.waitIfOngoing != nil { params.Set("wait_if_ongoing", fmt.Sprintf("%v", *s.waitIfOngoing)) } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } return path, params, nil }
// buildURL builds the URL for the operation. func (s *NodesInfoService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/_nodes/{node_id}/{metric}", map[string]string{ "node_id": strings.Join(s.nodeId, ","), "metric": strings.Join(s.metric, ","), }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.flatSettings != nil { params.Set("flat_settings", fmt.Sprintf("%v", *s.flatSettings)) } if s.human != nil { params.Set("human", fmt.Sprintf("%v", *s.human)) } if s.pretty { params.Set("pretty", "1") } return path, params, nil }
// Do executes the query and returns a "server-side cursor". func (s *ScanService) Do() (*ScanCursor, error) { // Build url path := "/" // Indices part indexPart := make([]string, 0) for _, index := range s.indices { index, err := uritemplates.Expand("{index}", map[string]string{ "index": index, }) if err != nil { return nil, err } indexPart = append(indexPart, index) } if len(indexPart) > 0 { path += strings.Join(indexPart, ",") } // Types typesPart := make([]string, 0) for _, typ := range s.types { typ, err := uritemplates.Expand("{type}", map[string]string{ "type": typ, }) if err != nil { return nil, err } typesPart = append(typesPart, typ) } if len(typesPart) > 0 { path += "/" + strings.Join(typesPart, ",") } // Search path += "/_search" // Parameters params := make(url.Values) if !s.searchSource.hasSort() { params.Set("search_type", "scan") } if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } if s.keepAlive != "" { params.Set("scroll", s.keepAlive) } else { params.Set("scroll", defaultKeepAlive) } if s.size != nil && *s.size > 0 { params.Set("size", fmt.Sprintf("%d", *s.size)) } if s.routing != "" { params.Set("routing", s.routing) } // Get response body, err := s.searchSource.Source() if err != nil { return nil, err } res, err := s.client.PerformRequest("POST", path, params, body) if err != nil { return nil, err } // Return result searchResult := new(SearchResult) if err := json.Unmarshal(res.Body, searchResult); err != nil { return nil, err } cursor := NewScanCursor(s.client, s.keepAlive, s.pretty, searchResult) return cursor, nil }
func (s *AliasesService) Do() (*AliasesResult, error) { var err error // Build url path := "/" // Indices part indexPart := make([]string, 0) for _, index := range s.indices { index, err = uritemplates.Expand("{index}", map[string]string{ "index": index, }) if err != nil { return nil, err } indexPart = append(indexPart, index) } path += strings.Join(indexPart, ",") // TODO Add types here // Search path += "/_aliases" // Parameters params := make(url.Values) if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } // Get response res, err := s.client.PerformRequest("GET", path, params, nil) if err != nil { return nil, err } // { // "indexName" : { // "aliases" : { // "alias1" : { }, // "alias2" : { } // } // }, // "indexName2" : { // ... // }, // } indexMap := make(map[string]interface{}) if err := json.Unmarshal(res.Body, &indexMap); err != nil { return nil, err } // Each (indexName, _) ret := &AliasesResult{ Indices: make(map[string]indexResult), } for indexName, indexData := range indexMap { indexOut, found := ret.Indices[indexName] if !found { indexOut = indexResult{Aliases: make([]aliasResult, 0)} } // { "aliases" : { ... } } indexDataMap, ok := indexData.(map[string]interface{}) if ok { aliasesData, ok := indexDataMap["aliases"].(map[string]interface{}) if ok { for aliasName, _ := range aliasesData { aliasRes := aliasResult{AliasName: aliasName} indexOut.Aliases = append(indexOut.Aliases, aliasRes) } } } ret.Indices[indexName] = indexOut } return ret, nil }
func (s *ScrollService) GetFirstPage() (*SearchResult, error) { // Build url path := "/" // Indices part indexPart := make([]string, 0) for _, index := range s.indices { index, err := uritemplates.Expand("{index}", map[string]string{ "index": index, }) if err != nil { return nil, err } indexPart = append(indexPart, index) } if len(indexPart) > 0 { path += strings.Join(indexPart, ",") } // Types typesPart := make([]string, 0) for _, typ := range s.types { typ, err := uritemplates.Expand("{type}", map[string]string{ "type": typ, }) if err != nil { return nil, err } typesPart = append(typesPart, typ) } if len(typesPart) > 0 { path += "/" + strings.Join(typesPart, ",") } // Search path += "/_search" // Parameters params := make(url.Values) params.Set("search_type", "scan") if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } if s.keepAlive != "" { params.Set("scroll", s.keepAlive) } else { params.Set("scroll", defaultKeepAlive) } if s.size != nil && *s.size > 0 { params.Set("size", fmt.Sprintf("%d", *s.size)) } // Set body body := make(map[string]interface{}) if s.query != nil { src, err := s.query.Source() if err != nil { return nil, err } body["query"] = src } // Get response res, err := s.client.PerformRequest("POST", path, params, body) if err != nil { return nil, err } // Return result searchResult := new(SearchResult) if err := json.Unmarshal(res.Body, searchResult); err != nil { return nil, err } return searchResult, nil }
// buildURL builds the URL for the operation. func (s *PercolateService) buildURL() (string, url.Values, error) { // Build URL var path string var err error if s.id == "" { path, err = uritemplates.Expand("/{index}/{type}/_percolate", map[string]string{ "index": s.index, "type": s.typ, }) } else { path, err = uritemplates.Expand("/{index}/{type}/{id}/_percolate", map[string]string{ "index": s.index, "type": s.typ, "id": s.id, }) } if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.version != nil { params.Set("version", fmt.Sprintf("%v", s.version)) } if s.versionType != "" { params.Set("version_type", s.versionType) } if len(s.routing) > 0 { params.Set("routing", strings.Join(s.routing, ",")) } if s.preference != "" { params.Set("preference", s.preference) } if s.ignoreUnavailable != nil { params.Set("ignore_unavailable", fmt.Sprintf("%v", *s.ignoreUnavailable)) } if s.percolateIndex != "" { params.Set("percolate_index", s.percolateIndex) } if s.percolatePreference != "" { params.Set("percolate_preference", s.percolatePreference) } if s.percolateRouting != "" { params.Set("percolate_routing", s.percolateRouting) } if s.source != "" { params.Set("source", s.source) } if s.allowNoIndices != nil { params.Set("allow_no_indices", fmt.Sprintf("%v", *s.allowNoIndices)) } if s.expandWildcards != "" { params.Set("expand_wildcards", s.expandWildcards) } if s.percolateFormat != "" { params.Set("percolate_format", s.percolateFormat) } if s.percolateType != "" { params.Set("percolate_type", s.percolateType) } return path, params, nil }
// Do executes the search and returns a SearchResult. func (s *SearchService) Do() (*SearchResult, error) { // Build url path := "/" // Indices part indexPart := make([]string, 0) for _, index := range s.indices { index, err := uritemplates.Expand("{index}", map[string]string{ "index": index, }) if err != nil { return nil, err } indexPart = append(indexPart, index) } path += strings.Join(indexPart, ",") // Types part if len(s.types) > 0 { typesPart := make([]string, 0) for _, typ := range s.types { typ, err := uritemplates.Expand("{type}", map[string]string{ "type": typ, }) if err != nil { return nil, err } typesPart = append(typesPart, typ) } path += "/" path += strings.Join(typesPart, ",") } // Search path += "/_search" // Parameters params := make(url.Values) if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } if s.searchType != "" { params.Set("search_type", s.searchType) } if s.routing != "" { params.Set("routing", s.routing) } // Perform request var body interface{} if s.source != nil { body = s.source } else { src, err := s.searchSource.Source() if err != nil { return nil, err } body = src } res, err := s.client.PerformRequest("POST", path, params, body) if err != nil { return nil, err } // Return search results ret := new(SearchResult) if err := json.Unmarshal(res.Body, ret); err != nil { return nil, err } return ret, nil }
// buildURL builds the URL for the operation. func (s *IndexService) buildURL() (string, string, url.Values, error) { var err error var method, path string if s.id != "" { // Create document with manual id method = "PUT" path, err = uritemplates.Expand("/{index}/{type}/{id}", map[string]string{ "id": s.id, "index": s.index, "type": s.typ, }) } else { // Automatic ID generation // See https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#index-creation method = "POST" path, err = uritemplates.Expand("/{index}/{type}/", map[string]string{ "index": s.index, "type": s.typ, }) } if err != nil { return "", "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if s.consistency != "" { params.Set("consistency", s.consistency) } if s.refresh != nil { params.Set("refresh", fmt.Sprintf("%v", *s.refresh)) } if s.opType != "" { params.Set("op_type", s.opType) } if s.parent != "" { params.Set("parent", s.parent) } if s.replication != "" { params.Set("replication", s.replication) } if s.routing != "" { params.Set("routing", s.routing) } if s.timeout != "" { params.Set("timeout", s.timeout) } if s.timestamp != "" { params.Set("timestamp", s.timestamp) } if s.ttl != "" { params.Set("ttl", s.ttl) } if s.version != nil { params.Set("version", fmt.Sprintf("%v", s.version)) } if s.versionType != "" { params.Set("version_type", s.versionType) } return method, path, params, nil }
func (s *BulkService) Do() (*BulkResponse, error) { // No actions? if s.NumberOfActions() == 0 { return nil, errors.New("elastic: No bulk actions to commit") } // Get body body, err := s.bodyAsString() if err != nil { return nil, err } // Build url path := "/" if s.index != "" { index, err := uritemplates.Expand("{index}", map[string]string{ "index": s.index, }) if err != nil { return nil, err } path += index + "/" } if s._type != "" { typ, err := uritemplates.Expand("{type}", map[string]string{ "type": s._type, }) if err != nil { return nil, err } path += typ + "/" } path += "_bulk" // Parameters params := make(url.Values) if s.pretty { params.Set("pretty", fmt.Sprintf("%v", s.pretty)) } if s.refresh != nil { params.Set("refresh", fmt.Sprintf("%v", *s.refresh)) } if s.timeout != "" { params.Set("timeout", s.timeout) } // Get response res, err := s.client.PerformRequest("POST", path, params, body) if err != nil { return nil, err } // Return results ret := new(BulkResponse) if err := json.Unmarshal(res.Body, ret); err != nil { return nil, err } // Reset so the request can be reused s.reset() return ret, nil }
// buildURL builds the URL for the operation. func (s *ExplainService) buildURL() (string, url.Values, error) { // Build URL path, err := uritemplates.Expand("/{index}/{type}/{id}/_explain", map[string]string{ "id": s.id, "index": s.index, "type": s.typ, }) if err != nil { return "", url.Values{}, err } // Add query string parameters params := url.Values{} if s.pretty { params.Set("pretty", "1") } if len(s.xSource) > 0 { params.Set("_source", strings.Join(s.xSource, ",")) } if s.defaultOperator != "" { params.Set("default_operator", s.defaultOperator) } if s.parent != "" { params.Set("parent", s.parent) } if s.preference != "" { params.Set("preference", s.preference) } if s.source != "" { params.Set("source", s.source) } if len(s.xSourceExclude) > 0 { params.Set("_source_exclude", strings.Join(s.xSourceExclude, ",")) } if s.lenient != nil { params.Set("lenient", fmt.Sprintf("%v", *s.lenient)) } if s.q != "" { params.Set("q", s.q) } if s.routing != "" { params.Set("routing", s.routing) } if len(s.fields) > 0 { params.Set("fields", strings.Join(s.fields, ",")) } if s.lowercaseExpandedTerms != nil { params.Set("lowercase_expanded_terms", fmt.Sprintf("%v", *s.lowercaseExpandedTerms)) } if len(s.xSourceInclude) > 0 { params.Set("_source_include", strings.Join(s.xSourceInclude, ",")) } if s.analyzeWildcard != nil { params.Set("analyze_wildcard", fmt.Sprintf("%v", *s.analyzeWildcard)) } if s.analyzer != "" { params.Set("analyzer", s.analyzer) } if s.df != "" { params.Set("df", s.df) } return path, params, nil }