create_index.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright 2012-2015 Oliver Eilhard. All rights reserved.
  2. // Use of this source code is governed by a MIT-license.
  3. // See http://olivere.mit-license.org/license.txt for details.
  4. package elastic
  5. import (
  6. "encoding/json"
  7. "fmt"
  8. "net/url"
  9. "github.com/olivere/elastic/uritemplates"
  10. )
  11. type CreateIndexService struct {
  12. client *Client
  13. index string
  14. body string
  15. pretty bool
  16. }
  17. func NewCreateIndexService(client *Client) *CreateIndexService {
  18. builder := &CreateIndexService{
  19. client: client,
  20. }
  21. return builder
  22. }
  23. func (b *CreateIndexService) Index(index string) *CreateIndexService {
  24. b.index = index
  25. return b
  26. }
  27. func (b *CreateIndexService) Body(body string) *CreateIndexService {
  28. b.body = body
  29. return b
  30. }
  31. func (b *CreateIndexService) Pretty(pretty bool) *CreateIndexService {
  32. b.pretty = pretty
  33. return b
  34. }
  35. func (b *CreateIndexService) Do() (*CreateIndexResult, error) {
  36. // Build url
  37. path, err := uritemplates.Expand("/{index}/", map[string]string{
  38. "index": b.index,
  39. })
  40. if err != nil {
  41. return nil, err
  42. }
  43. params := make(url.Values)
  44. if b.pretty {
  45. params.Set("pretty", fmt.Sprintf("%v", b.pretty))
  46. }
  47. // Get response
  48. res, err := b.client.PerformRequest("PUT", path, params, b.body)
  49. if err != nil {
  50. return nil, err
  51. }
  52. ret := new(CreateIndexResult)
  53. if err := json.Unmarshal(res.Body, ret); err != nil {
  54. return nil, err
  55. }
  56. return ret, nil
  57. }
  58. // -- Result of a create index request.
  59. type CreateIndexResult struct {
  60. Acknowledged bool `json:"acknowledged"`
  61. }