count_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright 2012-2014 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. "testing"
  7. )
  8. func TestCount(t *testing.T) {
  9. client := setupTestClientAndCreateIndex(t)
  10. tweet1 := tweet{User: "olivere", Message: "Welcome to Golang and Elasticsearch."}
  11. tweet2 := tweet{User: "olivere", Message: "Another unrelated topic."}
  12. tweet3 := tweet{User: "sandrae", Message: "Cycling is fun."}
  13. // Add all documents
  14. _, err := client.Index().Index(testIndexName).Type("tweet").Id("1").BodyJson(&tweet1).Do()
  15. if err != nil {
  16. t.Fatal(err)
  17. }
  18. _, err = client.Index().Index(testIndexName).Type("tweet").Id("2").BodyJson(&tweet2).Do()
  19. if err != nil {
  20. t.Fatal(err)
  21. }
  22. _, err = client.Index().Index(testIndexName).Type("tweet").Id("3").BodyJson(&tweet3).Do()
  23. if err != nil {
  24. t.Fatal(err)
  25. }
  26. _, err = client.Flush().Index(testIndexName).Do()
  27. if err != nil {
  28. t.Fatal(err)
  29. }
  30. // Count documents
  31. count, err := client.Count(testIndexName).Do()
  32. if err != nil {
  33. t.Fatal(err)
  34. }
  35. if count != 3 {
  36. t.Errorf("expected Count = %d; got %d", 3, count)
  37. }
  38. // Count documents
  39. count, err = client.Count(testIndexName).Type("tweet").Do()
  40. if err != nil {
  41. t.Fatal(err)
  42. }
  43. if count != 3 {
  44. t.Errorf("expected Count = %d; got %d", 3, count)
  45. }
  46. // Count documents
  47. count, err = client.Count(testIndexName).Type("gezwitscher").Do()
  48. if err != nil {
  49. t.Fatal(err)
  50. }
  51. if count != 0 {
  52. t.Errorf("expected Count = %d; got %d", 0, count)
  53. }
  54. // Count with query
  55. query := NewTermQuery("user", "olivere")
  56. count, err = client.Count(testIndexName).Query(query).Do()
  57. if err != nil {
  58. t.Fatal(err)
  59. }
  60. if count != 2 {
  61. t.Errorf("expected Count = %d; got %d", 2, count)
  62. }
  63. // Count with query and type
  64. query = NewTermQuery("user", "olivere")
  65. count, err = client.Count(testIndexName).Type("tweet").Query(query).Do()
  66. if err != nil {
  67. t.Fatal(err)
  68. }
  69. if count != 2 {
  70. t.Errorf("expected Count = %d; got %d", 2, count)
  71. }
  72. }