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 5package elastic 6 7import "testing" 8 9func TestPutMappingURL(t *testing.T) { 10 client := setupTestClientAndCreateIndex(t) 11 12 tests := []struct { 13 Indices []string 14 Type string 15 Expected string 16 }{ 17 { 18 []string{}, 19 "tweet", 20 "/_mapping/tweet", 21 }, 22 { 23 []string{"*"}, 24 "tweet", 25 "/%2A/_mapping/tweet", 26 }, 27 { 28 []string{"store-1", "store-2"}, 29 "tweet", 30 "/store-1%2Cstore-2/_mapping/tweet", 31 }, 32 } 33 34 for _, test := range tests { 35 path, _, err := client.PutMapping().Index(test.Indices...).Type(test.Type).buildURL() 36 if err != nil { 37 t.Fatal(err) 38 } 39 if path != test.Expected { 40 t.Errorf("expected %q; got: %q", test.Expected, path) 41 } 42 } 43} 44 45func TestMappingLifecycle(t *testing.T) { 46 client := setupTestClientAndCreateIndex(t) 47 48 mapping := `{ 49 "tweetdoc":{ 50 "properties":{ 51 "message":{ 52 "type":"string" 53 } 54 } 55 } 56 }` 57 58 putresp, err := client.PutMapping().Index(testIndexName2).Type("tweetdoc").BodyString(mapping).Do() 59 if err != nil { 60 t.Fatalf("expected put mapping to succeed; got: %v", err) 61 } 62 if putresp == nil { 63 t.Fatalf("expected put mapping response; got: %v", putresp) 64 } 65 if !putresp.Acknowledged { 66 t.Fatalf("expected put mapping ack; got: %v", putresp.Acknowledged) 67 } 68 69 getresp, err := client.GetMapping().Index(testIndexName2).Type("tweetdoc").Do() 70 if err != nil { 71 t.Fatalf("expected get mapping to succeed; got: %v", err) 72 } 73 if getresp == nil { 74 t.Fatalf("expected get mapping response; got: %v", getresp) 75 } 76 props, ok := getresp[testIndexName2] 77 if !ok { 78 t.Fatalf("expected JSON root to be of type map[string]interface{}; got: %#v", props) 79 } 80 81 // NOTE There is no Delete Mapping API in Elasticsearch 2.0 82} 83