percolate_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 "testing"
  6. func TestPercolate(t *testing.T) {
  7. client := setupTestClientAndCreateIndex(t) //, SetTraceLog(log.New(os.Stdout, "", 0)))
  8. tweet1 := tweet{User: "olivere", Message: "Welcome to Golang and Elasticsearch."}
  9. // Add a document
  10. _, err := client.Index().Index(testIndexName).Type("tweet").Id("1").BodyJson(&tweet1).Do()
  11. if err != nil {
  12. t.Fatal(err)
  13. }
  14. // Register a query in the ".percolator" type.
  15. search := NewSearchSource().Query(NewMatchQuery("message", "Golang"))
  16. _, err = client.Index().
  17. Index(testIndexName).Type(".percolator").Id("1").
  18. BodyJson(search.Source()).
  19. Do()
  20. if err != nil {
  21. t.Fatal(err)
  22. }
  23. // Percolate should return our registered query
  24. newTweet := tweet{User: "olivere", Message: "Golang is fun."}
  25. res, err := client.Percolate().
  26. Index(testIndexName).Type("tweet").
  27. Doc(newTweet). // shortcut for: BodyJson(map[string]interface{}{"doc": newTweet}).
  28. Pretty(true).
  29. Do()
  30. if err != nil {
  31. t.Fatal(err)
  32. }
  33. if res == nil {
  34. t.Errorf("expected results != nil; got nil")
  35. }
  36. if res.Total != 1 {
  37. t.Fatalf("expected 1 result; got: %d", res.Total)
  38. }
  39. if res.Matches == nil {
  40. t.Fatalf("expected Matches; got: %v", res.Matches)
  41. }
  42. matches := res.Matches
  43. if matches == nil {
  44. t.Fatalf("expected matches as map; got: %v", matches)
  45. }
  46. if len(matches) != 1 {
  47. t.Fatalf("expected %d registered matches; got: %d", 1, len(matches))
  48. }
  49. if matches[0].Id != "1" {
  50. t.Errorf("expected to return query %q; got: %q", "1", matches[0].Id)
  51. }
  52. }