elasticsearch-dsl 0.1.6 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +30 -8
  3. data/LICENSE.txt +199 -10
  4. data/README.md +62 -27
  5. data/Rakefile +29 -17
  6. data/elasticsearch-dsl.gemspec +40 -22
  7. data/lib/elasticsearch/dsl/search/aggregation.rb +21 -2
  8. data/lib/elasticsearch/dsl/search/aggregations/avg.rb +18 -1
  9. data/lib/elasticsearch/dsl/search/aggregations/cardinality.rb +18 -1
  10. data/lib/elasticsearch/dsl/search/aggregations/children.rb +18 -1
  11. data/lib/elasticsearch/dsl/search/aggregations/composite.rb +60 -0
  12. data/lib/elasticsearch/dsl/search/aggregations/date_histogram.rb +23 -5
  13. data/lib/elasticsearch/dsl/search/aggregations/date_range.rb +18 -1
  14. data/lib/elasticsearch/dsl/search/aggregations/extended_stats.rb +18 -1
  15. data/lib/elasticsearch/dsl/search/aggregations/filter.rb +18 -1
  16. data/lib/elasticsearch/dsl/search/aggregations/filters.rb +18 -1
  17. data/lib/elasticsearch/dsl/search/aggregations/geo_bounds.rb +18 -1
  18. data/lib/elasticsearch/dsl/search/aggregations/geo_distance.rb +18 -1
  19. data/lib/elasticsearch/dsl/search/aggregations/geohash_grid.rb +18 -1
  20. data/lib/elasticsearch/dsl/search/aggregations/global.rb +17 -0
  21. data/lib/elasticsearch/dsl/search/aggregations/histogram.rb +18 -1
  22. data/lib/elasticsearch/dsl/search/aggregations/ip_range.rb +18 -1
  23. data/lib/elasticsearch/dsl/search/aggregations/max.rb +18 -1
  24. data/lib/elasticsearch/dsl/search/aggregations/min.rb +18 -1
  25. data/lib/elasticsearch/dsl/search/aggregations/missing.rb +17 -0
  26. data/lib/elasticsearch/dsl/search/aggregations/nested.rb +18 -1
  27. data/lib/elasticsearch/dsl/search/aggregations/percentile_ranks.rb +18 -1
  28. data/lib/elasticsearch/dsl/search/aggregations/percentiles.rb +18 -1
  29. data/lib/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket.rb +17 -0
  30. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_script.rb +17 -0
  31. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector.rb +17 -0
  32. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_sort.rb +106 -0
  33. data/lib/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum.rb +17 -0
  34. data/lib/elasticsearch/dsl/search/aggregations/pipeline/derivative.rb +17 -0
  35. data/lib/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket.rb +17 -0
  36. data/lib/elasticsearch/dsl/search/aggregations/pipeline/max_bucket.rb +17 -0
  37. data/lib/elasticsearch/dsl/search/aggregations/pipeline/min_bucket.rb +17 -0
  38. data/lib/elasticsearch/dsl/search/aggregations/pipeline/moving_avg.rb +17 -0
  39. data/lib/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket.rb +17 -0
  40. data/lib/elasticsearch/dsl/search/aggregations/pipeline/serial_diff.rb +17 -0
  41. data/lib/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket.rb +17 -0
  42. data/lib/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket.rb +17 -0
  43. data/lib/elasticsearch/dsl/search/aggregations/range.rb +18 -1
  44. data/lib/elasticsearch/dsl/search/aggregations/reverse_nested.rb +18 -1
  45. data/lib/elasticsearch/dsl/search/aggregations/scripted_metric.rb +18 -1
  46. data/lib/elasticsearch/dsl/search/aggregations/significant_terms.rb +18 -1
  47. data/lib/elasticsearch/dsl/search/aggregations/significant_text.rb +62 -0
  48. data/lib/elasticsearch/dsl/search/aggregations/stats.rb +17 -0
  49. data/lib/elasticsearch/dsl/search/aggregations/sum.rb +18 -1
  50. data/lib/elasticsearch/dsl/search/aggregations/terms.rb +17 -0
  51. data/lib/elasticsearch/dsl/search/aggregations/top_hits.rb +18 -1
  52. data/lib/elasticsearch/dsl/search/aggregations/value_count.rb +18 -1
  53. data/lib/elasticsearch/dsl/search/base_aggregation_component.rb +20 -1
  54. data/lib/elasticsearch/dsl/search/base_component.rb +30 -1
  55. data/lib/elasticsearch/dsl/search/base_compound_filter_component.rb +20 -1
  56. data/lib/elasticsearch/dsl/search/collapse.rb +95 -0
  57. data/lib/elasticsearch/dsl/search/filter.rb +21 -2
  58. data/lib/elasticsearch/dsl/search/filters/and.rb +18 -1
  59. data/lib/elasticsearch/dsl/search/filters/bool.rb +23 -4
  60. data/lib/elasticsearch/dsl/search/filters/exists.rb +18 -1
  61. data/lib/elasticsearch/dsl/search/filters/geo_bounding_box.rb +18 -1
  62. data/lib/elasticsearch/dsl/search/filters/geo_distance.rb +18 -1
  63. data/lib/elasticsearch/dsl/search/filters/geo_distance_range.rb +18 -1
  64. data/lib/elasticsearch/dsl/search/filters/geo_polygon.rb +18 -1
  65. data/lib/elasticsearch/dsl/search/filters/geo_shape.rb +18 -1
  66. data/lib/elasticsearch/dsl/search/filters/geohash_cell.rb +18 -1
  67. data/lib/elasticsearch/dsl/search/filters/has_child.rb +18 -1
  68. data/lib/elasticsearch/dsl/search/filters/has_parent.rb +18 -1
  69. data/lib/elasticsearch/dsl/search/filters/ids.rb +18 -1
  70. data/lib/elasticsearch/dsl/search/filters/indices.rb +19 -2
  71. data/lib/elasticsearch/dsl/search/filters/limit.rb +18 -1
  72. data/lib/elasticsearch/dsl/search/filters/match_all.rb +18 -1
  73. data/lib/elasticsearch/dsl/search/filters/missing.rb +18 -1
  74. data/lib/elasticsearch/dsl/search/filters/nested.rb +27 -1
  75. data/lib/elasticsearch/dsl/search/filters/not.rb +21 -2
  76. data/lib/elasticsearch/dsl/search/filters/or.rb +18 -1
  77. data/lib/elasticsearch/dsl/search/filters/prefix.rb +18 -1
  78. data/lib/elasticsearch/dsl/search/filters/query.rb +18 -1
  79. data/lib/elasticsearch/dsl/search/filters/range.rb +18 -1
  80. data/lib/elasticsearch/dsl/search/filters/regexp.rb +18 -1
  81. data/lib/elasticsearch/dsl/search/filters/script.rb +18 -1
  82. data/lib/elasticsearch/dsl/search/filters/term.rb +18 -1
  83. data/lib/elasticsearch/dsl/search/filters/terms.rb +18 -1
  84. data/lib/elasticsearch/dsl/search/filters/type.rb +18 -1
  85. data/lib/elasticsearch/dsl/search/highlight.rb +18 -1
  86. data/lib/elasticsearch/dsl/search/options.rb +20 -2
  87. data/lib/elasticsearch/dsl/search/queries/bool.rb +24 -7
  88. data/lib/elasticsearch/dsl/search/queries/boosting.rb +18 -1
  89. data/lib/elasticsearch/dsl/search/queries/common.rb +18 -1
  90. data/lib/elasticsearch/dsl/search/queries/constant_score.rb +18 -1
  91. data/lib/elasticsearch/dsl/search/queries/dis_max.rb +18 -1
  92. data/lib/elasticsearch/dsl/search/queries/exists.rb +17 -0
  93. data/lib/elasticsearch/dsl/search/queries/filtered.rb +18 -1
  94. data/lib/elasticsearch/dsl/search/queries/function_score.rb +19 -1
  95. data/lib/elasticsearch/dsl/search/queries/fuzzy.rb +18 -1
  96. data/lib/elasticsearch/dsl/search/queries/fuzzy_like_this.rb +18 -1
  97. data/lib/elasticsearch/dsl/search/queries/fuzzy_like_this_field.rb +18 -1
  98. data/lib/elasticsearch/dsl/search/queries/geo_shape.rb +18 -1
  99. data/lib/elasticsearch/dsl/search/queries/has_child.rb +18 -1
  100. data/lib/elasticsearch/dsl/search/queries/has_parent.rb +18 -1
  101. data/lib/elasticsearch/dsl/search/queries/ids.rb +18 -1
  102. data/lib/elasticsearch/dsl/search/queries/indices.rb +18 -1
  103. data/lib/elasticsearch/dsl/search/queries/inner_hits.rb +133 -0
  104. data/lib/elasticsearch/dsl/search/queries/match.rb +18 -1
  105. data/lib/elasticsearch/dsl/search/queries/match_all.rb +18 -1
  106. data/lib/elasticsearch/dsl/search/queries/match_phrase.rb +17 -0
  107. data/lib/elasticsearch/dsl/search/queries/match_phrase_prefix.rb +17 -0
  108. data/lib/elasticsearch/dsl/search/queries/more_like_this.rb +18 -1
  109. data/lib/elasticsearch/dsl/search/queries/multi_match.rb +18 -1
  110. data/lib/elasticsearch/dsl/search/queries/nested.rb +18 -1
  111. data/lib/elasticsearch/dsl/search/queries/prefix.rb +18 -1
  112. data/lib/elasticsearch/dsl/search/queries/query_string.rb +20 -4
  113. data/lib/elasticsearch/dsl/search/queries/range.rb +18 -1
  114. data/lib/elasticsearch/dsl/search/queries/regexp.rb +18 -1
  115. data/lib/elasticsearch/dsl/search/queries/simple_query_string.rb +18 -1
  116. data/lib/elasticsearch/dsl/search/queries/span_first.rb +18 -1
  117. data/lib/elasticsearch/dsl/search/queries/span_multi.rb +18 -1
  118. data/lib/elasticsearch/dsl/search/queries/span_near.rb +18 -1
  119. data/lib/elasticsearch/dsl/search/queries/span_not.rb +18 -1
  120. data/lib/elasticsearch/dsl/search/queries/span_or.rb +18 -1
  121. data/lib/elasticsearch/dsl/search/queries/span_term.rb +18 -1
  122. data/lib/elasticsearch/dsl/search/queries/template.rb +18 -1
  123. data/lib/elasticsearch/dsl/search/queries/term.rb +18 -1
  124. data/lib/elasticsearch/dsl/search/queries/terms.rb +18 -1
  125. data/lib/elasticsearch/dsl/search/queries/top_children.rb +18 -1
  126. data/lib/elasticsearch/dsl/search/queries/wildcard.rb +18 -1
  127. data/lib/elasticsearch/dsl/search/query.rb +21 -2
  128. data/lib/elasticsearch/dsl/search/sort.rb +18 -1
  129. data/lib/elasticsearch/dsl/search/suggest.rb +18 -1
  130. data/lib/elasticsearch/dsl/search.rb +46 -4
  131. data/lib/elasticsearch/dsl/utils.rb +17 -0
  132. data/lib/elasticsearch/dsl/version.rb +18 -1
  133. data/lib/elasticsearch/dsl.rb +19 -1
  134. data/lib/elasticsearch-dsl.rb +17 -0
  135. data/spec/elasticsearch/dsl/search/aggregations/avg_spec.rb +43 -0
  136. data/spec/elasticsearch/dsl/search/aggregations/cardinality_spec.rb +110 -0
  137. data/spec/elasticsearch/dsl/search/aggregations/children_spec.rb +66 -0
  138. data/spec/elasticsearch/dsl/search/aggregations/composite_spec.rb +99 -0
  139. data/spec/elasticsearch/dsl/search/aggregations/date_histogram_spec.rb +182 -0
  140. data/spec/elasticsearch/dsl/search/aggregations/date_range_spec.rb +89 -0
  141. data/spec/elasticsearch/dsl/search/aggregations/extended_stats_spec.rb +43 -0
  142. data/spec/elasticsearch/dsl/search/aggregations/filter_spec.rb +48 -0
  143. data/spec/elasticsearch/dsl/search/aggregations/filters_spec.rb +89 -0
  144. data/spec/elasticsearch/dsl/search/aggregations/geo_bounds_spec.rb +77 -0
  145. data/spec/elasticsearch/dsl/search/aggregations/geo_distance_spec.rb +113 -0
  146. data/spec/elasticsearch/dsl/search/aggregations/geo_grid_spec.rb +100 -0
  147. data/spec/elasticsearch/dsl/search/aggregations/global_spec.rb +62 -0
  148. data/spec/elasticsearch/dsl/search/aggregations/historgram_spec.rb +122 -0
  149. data/spec/elasticsearch/dsl/search/aggregations/ip_range_spec.rb +93 -0
  150. data/spec/elasticsearch/dsl/search/aggregations/max_spec.rb +43 -0
  151. data/spec/elasticsearch/dsl/search/aggregations/min_spec.rb +43 -0
  152. data/spec/elasticsearch/dsl/search/aggregations/missing_spec.rb +81 -0
  153. data/spec/elasticsearch/dsl/search/aggregations/nested_spec.rb +86 -0
  154. data/spec/elasticsearch/dsl/search/aggregations/percentile_ranks_spec.rb +126 -0
  155. data/spec/elasticsearch/dsl/search/aggregations/percentiles_spec.rb +125 -0
  156. data/spec/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket_spec.rb +88 -0
  157. data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_script_spec.rb +99 -0
  158. data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector_spec.rb +88 -0
  159. data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_sort_spec.rb +104 -0
  160. data/spec/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum_spec.rb +77 -0
  161. data/spec/elasticsearch/dsl/search/aggregations/pipeline/derivative_spec.rb +88 -0
  162. data/spec/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket_spec.rb +88 -0
  163. data/spec/elasticsearch/dsl/search/aggregations/pipeline/max_bucket_spec.rb +88 -0
  164. data/spec/elasticsearch/dsl/search/aggregations/pipeline/min_bucket_spec.rb +88 -0
  165. data/spec/elasticsearch/dsl/search/aggregations/pipeline/moving_avg_test_spec.rb +132 -0
  166. data/spec/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket_spec.rb +99 -0
  167. data/spec/elasticsearch/dsl/search/aggregations/pipeline/serial_diff_spec.rb +99 -0
  168. data/spec/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket_spec.rb +88 -0
  169. data/spec/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket_spec.rb +88 -0
  170. data/spec/elasticsearch/dsl/search/aggregations/range_spec.rb +119 -0
  171. data/spec/elasticsearch/dsl/search/aggregations/reverse_nested_spec.rb +32 -0
  172. data/spec/elasticsearch/dsl/search/aggregations/scripted_metric_spec.rb +121 -0
  173. data/spec/elasticsearch/dsl/search/aggregations/significant_terms_spec.rb +176 -0
  174. data/spec/elasticsearch/dsl/search/aggregations/significant_text_spec.rb +176 -0
  175. data/spec/elasticsearch/dsl/search/aggregations/stats_spec.rb +56 -0
  176. data/spec/elasticsearch/dsl/search/aggregations/sum_spec.rb +43 -0
  177. data/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb +165 -0
  178. data/spec/elasticsearch/dsl/search/aggregations/top_hits_spec.rb +88 -0
  179. data/spec/elasticsearch/dsl/search/aggregations/value_count_spec.rb +43 -0
  180. data/spec/elasticsearch/dsl/search/collapse_spec.rb +93 -0
  181. data/spec/elasticsearch/dsl/search/filters/and_spec.rb +74 -0
  182. data/spec/elasticsearch/dsl/search/filters/bool_spec.rb +213 -0
  183. data/spec/elasticsearch/dsl/search/filters/exists_spec.rb +66 -0
  184. data/spec/elasticsearch/dsl/search/filters/geo_bounding_box_spec.rb +144 -0
  185. data/spec/elasticsearch/dsl/search/filters/geo_distance_range_spec.rb +103 -0
  186. data/spec/elasticsearch/dsl/search/filters/geo_distance_spec.rb +126 -0
  187. data/spec/elasticsearch/dsl/search/filters/geo_polygon_spec.rb +66 -0
  188. data/spec/elasticsearch/dsl/search/filters/geo_shape_spec.rb +77 -0
  189. data/spec/elasticsearch/dsl/search/filters/geohash_cell_spec.rb +99 -0
  190. data/spec/elasticsearch/dsl/search/filters/has_child_spec.rb +139 -0
  191. data/spec/elasticsearch/dsl/search/filters/has_parent_spec.rb +128 -0
  192. data/spec/elasticsearch/dsl/search/filters/ids_spec.rb +78 -0
  193. data/spec/elasticsearch/dsl/search/filters/indices_spec.rb +109 -0
  194. data/spec/elasticsearch/dsl/search/filters/limit_spec.rb +66 -0
  195. data/spec/elasticsearch/dsl/search/filters/match_all_spec.rb +32 -0
  196. data/spec/elasticsearch/dsl/search/filters/missing_spec.rb +66 -0
  197. data/spec/elasticsearch/dsl/search/filters/nested_spec.rb +91 -0
  198. data/spec/elasticsearch/dsl/search/filters/not_spec.rb +59 -0
  199. data/spec/elasticsearch/dsl/search/filters/or_spec.rb +75 -0
  200. data/spec/elasticsearch/dsl/search/filters/prefix_spec.rb +46 -0
  201. data/spec/elasticsearch/dsl/search/filters/query_spec.rb +59 -0
  202. data/spec/elasticsearch/dsl/search/filters/range_spec.rb +111 -0
  203. data/spec/elasticsearch/dsl/search/filters/regexp_spec.rb +88 -0
  204. data/spec/elasticsearch/dsl/search/filters/script_spec.rb +77 -0
  205. data/spec/elasticsearch/dsl/search/filters/term_spec.rb +57 -0
  206. data/spec/elasticsearch/dsl/search/filters/terms_spec.rb +46 -0
  207. data/spec/elasticsearch/dsl/search/filters/type_spec.rb +66 -0
  208. data/spec/elasticsearch/dsl/search/queries/bool_spec.rb +267 -0
  209. data/spec/elasticsearch/dsl/search/queries/boosting_spec.rb +90 -0
  210. data/spec/elasticsearch/dsl/search/queries/common_spec.rb +132 -0
  211. data/spec/elasticsearch/dsl/search/queries/constant_score_spec.rb +90 -0
  212. data/spec/elasticsearch/dsl/search/queries/dis_max_spec.rb +88 -0
  213. data/spec/elasticsearch/dsl/search/queries/exists_spec.rb +66 -0
  214. data/spec/elasticsearch/dsl/search/queries/filtered_spec.rb +93 -0
  215. data/spec/elasticsearch/dsl/search/queries/function_score_spec.rb +175 -0
  216. data/spec/elasticsearch/dsl/search/queries/fuzzy_like_this_field_spec.rb +132 -0
  217. data/spec/elasticsearch/dsl/search/queries/fuzzy_like_this_spec.rb +134 -0
  218. data/spec/elasticsearch/dsl/search/queries/fuzzy_spec.rb +110 -0
  219. data/spec/elasticsearch/dsl/search/queries/geo_shape_spec.rb +77 -0
  220. data/spec/elasticsearch/dsl/search/queries/has_child_spec.rb +126 -0
  221. data/spec/elasticsearch/dsl/search/queries/has_parent_spec.rb +100 -0
  222. data/spec/elasticsearch/dsl/search/queries/ids_spec.rb +78 -0
  223. data/spec/elasticsearch/dsl/search/queries/indices_spec.rb +89 -0
  224. data/spec/elasticsearch/dsl/search/queries/inner_hits_spec.rb +144 -0
  225. data/spec/elasticsearch/dsl/search/queries/match_all_spec.rb +66 -0
  226. data/spec/elasticsearch/dsl/search/queries/match_phrase_prefix_spec.rb +103 -0
  227. data/spec/elasticsearch/dsl/search/queries/match_phrase_spec.rb +114 -0
  228. data/spec/elasticsearch/dsl/search/queries/match_spec.rb +107 -0
  229. data/spec/elasticsearch/dsl/search/queries/more_like_this_spec.rb +87 -0
  230. data/spec/elasticsearch/dsl/search/queries/multi_match_spec.rb +74 -0
  231. data/spec/elasticsearch/dsl/search/queries/nested_spec.rb +98 -0
  232. data/spec/elasticsearch/dsl/search/queries/prefix_spec.rb +70 -0
  233. data/spec/elasticsearch/dsl/search/queries/query_string_spec.rb +85 -0
  234. data/spec/elasticsearch/dsl/search/queries/range_spec.rb +78 -0
  235. data/spec/elasticsearch/dsl/search/queries/regexp_spec.rb +82 -0
  236. data/spec/elasticsearch/dsl/search/queries/simple_query_string_spec.rb +74 -0
  237. data/spec/elasticsearch/dsl/search/queries/span_first_spec.rb +69 -0
  238. data/spec/elasticsearch/dsl/search/queries/span_multi_spec.rb +69 -0
  239. data/spec/elasticsearch/dsl/search/queries/span_near_spec.rb +72 -0
  240. data/spec/elasticsearch/dsl/search/queries/span_not_spec.rb +73 -0
  241. data/spec/elasticsearch/dsl/search/queries/span_or_spec.rb +69 -0
  242. data/spec/elasticsearch/dsl/search/queries/span_term_spec.rb +46 -0
  243. data/spec/elasticsearch/dsl/search/queries/template_spec.rb +84 -0
  244. data/spec/elasticsearch/dsl/search/queries/term_spec.rb +57 -0
  245. data/spec/elasticsearch/dsl/search/queries/terms_spec.rb +46 -0
  246. data/spec/elasticsearch/dsl/search/queries/top_children_spec.rb +93 -0
  247. data/spec/elasticsearch/dsl/search/queries/wildcard_spec.rb +81 -0
  248. data/spec/elasticsearch/dsl/search_spec.rb +385 -0
  249. data/spec/spec_helper.rb +24 -0
  250. data/test/integration/search_aggregation_children_test.rb +44 -37
  251. data/test/integration/search_aggregation_geo_test.rb +27 -16
  252. data/test/integration/search_aggregation_nested_test.rb +32 -20
  253. data/test/integration/search_aggregations_test.rb +28 -13
  254. data/test/integration/search_filters_test.rb +33 -22
  255. data/test/integration/search_options_test.rb +20 -3
  256. data/test/integration/search_query_test.rb +24 -11
  257. data/test/integration/search_size_from_test.rb +22 -5
  258. data/test/integration/search_sort_test.rb +20 -7
  259. data/test/integration/search_suggest_test.rb +30 -19
  260. data/test/integration/search_test.rb +21 -8
  261. data/test/test_helper.rb +30 -23
  262. data/test/unit/dsl_test.rb +17 -0
  263. data/test/unit/search_aggregation_test.rb +17 -0
  264. data/test/unit/search_base_aggregation_component_test.rb +17 -0
  265. data/test/unit/search_base_component_test.rb +17 -0
  266. data/test/unit/search_filter_test.rb +17 -0
  267. data/test/unit/search_highlight_test.rb +17 -0
  268. data/test/unit/search_options_test.rb +25 -0
  269. data/test/unit/search_query_test.rb +17 -0
  270. data/test/unit/search_size_from_test.rb +17 -0
  271. data/test/unit/search_sort_test.rb +17 -0
  272. data/test/unit/search_suggest_test.rb +17 -0
  273. data/test/unit/search_test.rb +24 -0
  274. data/test/unit/utils_test.rb +17 -0
  275. metadata +278 -270
  276. data/test/unit/aggregations/avg_test.rb +0 -24
  277. data/test/unit/aggregations/cardinality_test.rb +0 -40
  278. data/test/unit/aggregations/children_test.rb +0 -36
  279. data/test/unit/aggregations/date_histogram_test.rb +0 -49
  280. data/test/unit/aggregations/date_range_test.rb +0 -42
  281. data/test/unit/aggregations/extended_stats_test.rb +0 -24
  282. data/test/unit/aggregations/filter_test.rb +0 -31
  283. data/test/unit/aggregations/filters_test.rb +0 -52
  284. data/test/unit/aggregations/geo_bounds_test.rb +0 -37
  285. data/test/unit/aggregations/geo_distance_test.rb +0 -45
  286. data/test/unit/aggregations/geohash_grid_test.rb +0 -40
  287. data/test/unit/aggregations/global_test.rb +0 -38
  288. data/test/unit/aggregations/histogram_test.rb +0 -42
  289. data/test/unit/aggregations/ip_range_test.rb +0 -41
  290. data/test/unit/aggregations/max_test.rb +0 -24
  291. data/test/unit/aggregations/min_test.rb +0 -24
  292. data/test/unit/aggregations/missing_test.rb +0 -39
  293. data/test/unit/aggregations/nested_test.rb +0 -48
  294. data/test/unit/aggregations/percentile_ranks_test.rb +0 -41
  295. data/test/unit/aggregations/percentiles_test.rb +0 -40
  296. data/test/unit/aggregations/pipeline/avg_bucket_test.rb +0 -39
  297. data/test/unit/aggregations/pipeline/bucket_script_test.rb +0 -39
  298. data/test/unit/aggregations/pipeline/bucket_selector_test.rb +0 -38
  299. data/test/unit/aggregations/pipeline/cumulative_sum_test.rb +0 -37
  300. data/test/unit/aggregations/pipeline/derivative_test.rb +0 -39
  301. data/test/unit/aggregations/pipeline/extended_stats_bucket_test.rb +0 -38
  302. data/test/unit/aggregations/pipeline/max_bucket_test.rb +0 -38
  303. data/test/unit/aggregations/pipeline/min_bucket_test.rb +0 -38
  304. data/test/unit/aggregations/pipeline/moving_avg_test.rb +0 -41
  305. data/test/unit/aggregations/pipeline/percentiles_bucket_test.rb +0 -39
  306. data/test/unit/aggregations/pipeline/serial_diff_test.rb +0 -39
  307. data/test/unit/aggregations/pipeline/stats_bucket_test.rb +0 -38
  308. data/test/unit/aggregations/pipeline/sum_bucket_test.rb +0 -38
  309. data/test/unit/aggregations/range_test.rb +0 -59
  310. data/test/unit/aggregations/reverse_nested_test.rb +0 -20
  311. data/test/unit/aggregations/scripted_metric_test.rb +0 -41
  312. data/test/unit/aggregations/significant_terms_test.rb +0 -46
  313. data/test/unit/aggregations/stats_test.rb +0 -32
  314. data/test/unit/aggregations/sum_test.rb +0 -24
  315. data/test/unit/aggregations/terms_test.rb +0 -51
  316. data/test/unit/aggregations/top_hits_test.rb +0 -38
  317. data/test/unit/aggregations/value_count_test.rb +0 -24
  318. data/test/unit/filters/and_test.rb +0 -69
  319. data/test/unit/filters/bool_test.rb +0 -98
  320. data/test/unit/filters/exists_test.rb +0 -36
  321. data/test/unit/filters/geo_bounding_box_test.rb +0 -45
  322. data/test/unit/filters/geo_distance_range_test.rb +0 -51
  323. data/test/unit/filters/geo_distance_test.rb +0 -58
  324. data/test/unit/filters/geo_polygon_test.rb +0 -36
  325. data/test/unit/filters/geo_shape_test.rb +0 -37
  326. data/test/unit/filters/geohash_cell_test.rb +0 -43
  327. data/test/unit/filters/has_child_test.rb +0 -54
  328. data/test/unit/filters/has_parent_test.rb +0 -54
  329. data/test/unit/filters/ids_test.rb +0 -38
  330. data/test/unit/filters/indices_test.rb +0 -52
  331. data/test/unit/filters/limit_test.rb +0 -36
  332. data/test/unit/filters/match_all_test.rb +0 -20
  333. data/test/unit/filters/missing_test.rb +0 -38
  334. data/test/unit/filters/nested_test.rb +0 -40
  335. data/test/unit/filters/not_test.rb +0 -35
  336. data/test/unit/filters/or_test.rb +0 -53
  337. data/test/unit/filters/prefix_test.rb +0 -25
  338. data/test/unit/filters/query_test.rb +0 -33
  339. data/test/unit/filters/range_test.rb +0 -48
  340. data/test/unit/filters/regexp_test.rb +0 -42
  341. data/test/unit/filters/script_test.rb +0 -38
  342. data/test/unit/filters/term_test.rb +0 -27
  343. data/test/unit/filters/terms_test.rb +0 -24
  344. data/test/unit/filters/type_test.rb +0 -36
  345. data/test/unit/queries/bool_test.rb +0 -147
  346. data/test/unit/queries/boosting_test.rb +0 -41
  347. data/test/unit/queries/common_test.rb +0 -42
  348. data/test/unit/queries/constant_score_test.rb +0 -47
  349. data/test/unit/queries/dis_max_test.rb +0 -38
  350. data/test/unit/queries/exists_test.rb +0 -36
  351. data/test/unit/queries/filtered_test.rb +0 -51
  352. data/test/unit/queries/function_score_test.rb +0 -70
  353. data/test/unit/queries/fuzzy_like_this_field_test.rb +0 -42
  354. data/test/unit/queries/fuzzy_like_this_test.rb +0 -44
  355. data/test/unit/queries/fuzzy_test.rb +0 -40
  356. data/test/unit/queries/geo_shape_test.rb +0 -37
  357. data/test/unit/queries/has_child_test.rb +0 -55
  358. data/test/unit/queries/has_parent_test.rb +0 -41
  359. data/test/unit/queries/ids_test.rb +0 -38
  360. data/test/unit/queries/indices_test.rb +0 -39
  361. data/test/unit/queries/match_all_test.rb +0 -36
  362. data/test/unit/queries/match_phrase_prefix_test.rb +0 -62
  363. data/test/unit/queries/match_phrase_test.rb +0 -63
  364. data/test/unit/queries/match_test.rb +0 -65
  365. data/test/unit/queries/more_like_this_test.rb +0 -53
  366. data/test/unit/queries/multi_match_test.rb +0 -42
  367. data/test/unit/queries/nested_test.rb +0 -52
  368. data/test/unit/queries/prefix_test.rb +0 -37
  369. data/test/unit/queries/query_string_test.rb +0 -56
  370. data/test/unit/queries/range_test.rb +0 -41
  371. data/test/unit/queries/regexp_test.rb +0 -43
  372. data/test/unit/queries/simple_query_string_test.rb +0 -41
  373. data/test/unit/queries/span_first_test.rb +0 -36
  374. data/test/unit/queries/span_multi_test.rb +0 -36
  375. data/test/unit/queries/span_near_test.rb +0 -39
  376. data/test/unit/queries/span_not_test.rb +0 -40
  377. data/test/unit/queries/span_or_test.rb +0 -36
  378. data/test/unit/queries/span_term_test.rb +0 -24
  379. data/test/unit/queries/template_test.rb +0 -43
  380. data/test/unit/queries/term_test.rb +0 -27
  381. data/test/unit/queries/terms_test.rb +0 -24
  382. data/test/unit/queries/top_children_test.rb +0 -53
  383. data/test/unit/queries/wildcard_test.rb +0 -43
@@ -0,0 +1,385 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search do
21
+
22
+ include Elasticsearch::DSL
23
+
24
+ describe '#initialize' do
25
+
26
+ let(:s) do
27
+ search do
28
+ query do
29
+ match title: 'test'
30
+ end
31
+ end
32
+ end
33
+
34
+ let(:expected_hash) do
35
+ { query: { match: { title: 'test' } } }
36
+ end
37
+
38
+ it 'creates the search definition' do
39
+ expect(s.to_hash).to eq(expected_hash)
40
+ end
41
+ end
42
+
43
+ context 'when a block is provided' do
44
+
45
+ context 'when the top-level scope is accessed in the block' do
46
+
47
+ context 'when the method is accessed from within a \'query\' block' do
48
+
49
+ let(:s) do
50
+ def query_value
51
+ { title: 'test' }
52
+ end
53
+
54
+ search do
55
+ query do
56
+ match query_value
57
+ end
58
+ end
59
+ end
60
+
61
+ let(:expected_hash) do
62
+ { query: { match: { title: 'test' } } }
63
+ end
64
+
65
+ it 'allows access to the containing scope' do
66
+ expect(s.to_hash).to eq(expected_hash)
67
+ end
68
+ end
69
+
70
+ context 'when the method is accessed from within a \'base_component\' block' do
71
+
72
+ let(:s) do
73
+ def sort_field
74
+ :category
75
+ end
76
+
77
+ search do
78
+ query do
79
+ match title: 'test'
80
+ end
81
+ sort do
82
+ by sort_field, order: 'desc'
83
+ end
84
+ end
85
+ end
86
+
87
+ let(:expected_hash) do
88
+ { query: { match: { title: 'test' } }, sort: [{ category: { order: 'desc'} }] }
89
+ end
90
+
91
+ it 'allows access to the containing scope' do
92
+ expect(s.to_hash).to eq(expected_hash)
93
+ end
94
+ end
95
+
96
+ context 'when the method is accessed from within a \'_not\' block' do
97
+
98
+ let(:s) do
99
+ def term_field
100
+ :color
101
+ end
102
+
103
+ search do
104
+ query do
105
+ filtered do
106
+ filter do
107
+ _not do
108
+ term term_field => 'red'
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ let(:expected_hash) do
117
+ { query: { filtered: { filter: { not: { term: { color: 'red' } } } } } }
118
+ end
119
+
120
+ it 'allows access to the containing scope' do
121
+ expect(s.to_hash).to eq(expected_hash)
122
+ end
123
+ end
124
+
125
+ context 'when the method is accessed from within a \'aggregation\' block' do
126
+
127
+ let(:s) do
128
+ def sum_field
129
+ 'clicks'
130
+ end
131
+
132
+ def aggregation_name
133
+ :sum_clicks
134
+ end
135
+
136
+ search do
137
+ aggregation :clicks_for_tag_one do
138
+ filter terms: { tags: ['one'] } do
139
+ aggregation aggregation_name do
140
+ sum field: sum_field
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+
147
+ let(:expected_hash) do
148
+ { aggregations: { clicks_for_tag_one: { filter: { terms: { tags: ['one'] } },
149
+ aggregations: { sum_clicks: { sum: { field: 'clicks' } } } } } }
150
+ end
151
+
152
+ it 'allows access to the containing scope' do
153
+ expect(s.to_hash).to eq(expected_hash)
154
+ end
155
+ end
156
+
157
+ context 'when the method is accessed from within a \'filter\' block' do
158
+
159
+ let(:s) do
160
+
161
+ def not_clause(obj)
162
+ obj.instance_eval do
163
+ _not do
164
+ term color: 'red'
165
+ end
166
+ end
167
+ end
168
+
169
+ search do
170
+ query do
171
+ filtered do
172
+ filter do
173
+ not_clause(self)
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end
179
+
180
+ let(:expected_hash) do
181
+ { query: { filtered: { filter: { not: { term: { color: 'red' } } } } } }
182
+ end
183
+
184
+ it 'allows access to the containing scope' do
185
+ expect(s.to_hash).to eq(expected_hash)
186
+ end
187
+ end
188
+
189
+ context 'when the method is accessed from within a \'base_aggregation_component\' block' do
190
+
191
+ let(:s) do
192
+
193
+ def term_field
194
+ :body
195
+ end
196
+
197
+ search do
198
+ aggregation :interesting_terms do
199
+ significant_terms do
200
+ field :body
201
+ end
202
+ end
203
+ end
204
+ end
205
+
206
+ let(:expected_hash) do
207
+ { aggregations: { interesting_terms: { significant_terms: { field: :body } } } }
208
+ end
209
+
210
+ it 'allows access to the containing scope' do
211
+ expect(s.to_hash).to eq(expected_hash)
212
+ end
213
+ end
214
+
215
+ context 'when the method is accessed from within a \'base_compound_filter_component\' block' do
216
+
217
+ let(:s) do
218
+
219
+ def term_field
220
+ 'red'
221
+ end
222
+
223
+ search do
224
+ query do
225
+ filtered do
226
+ filter do
227
+ _and do
228
+ term color: term_field
229
+ term size: 'xxl'
230
+ end
231
+ end
232
+ end
233
+ end
234
+ end
235
+ end
236
+
237
+ let(:expected_hash) do
238
+ { query: { filtered: { filter: { and: [{ term: { color: 'red' } },
239
+ { term: { size: 'xxl' } }] } } } }
240
+ end
241
+
242
+ it 'allows access to the containing scope' do
243
+ expect(s.to_hash).to eq(expected_hash)
244
+ end
245
+ end
246
+ end
247
+
248
+ context 'when other methods are used to construct the query' do
249
+
250
+ def bool_query(obj)
251
+ obj.instance_eval do
252
+ bool do
253
+ must do
254
+ match foo: 'bar'
255
+ end
256
+ filter do
257
+ term foo: 'bar'
258
+ end
259
+ end
260
+ end
261
+ end
262
+
263
+ let(:my_search) do
264
+ search do
265
+ query do
266
+ bool_query(self)
267
+ end
268
+ end
269
+ end
270
+
271
+ it 'allows the subquery to be defined on the calling scope' do
272
+ expect(my_search.to_hash).to eq(query: { bool: { filter: [{ term: { foo: 'bar' } }],
273
+ must: [{ match: { foo: 'bar' } }] } })
274
+ end
275
+ end
276
+ end
277
+
278
+ describe '#collapse' do
279
+
280
+ let(:s) do
281
+ search do
282
+ query do
283
+ match title: 'test'
284
+ end
285
+ collapse :user do
286
+ max_concurrent_group_searches 4
287
+ inner_hits 'last_tweet' do
288
+ size 10
289
+ from 5
290
+ sort do
291
+ by :date, order: 'desc'
292
+ by :likes, order: 'asc'
293
+ end
294
+ end
295
+ end
296
+ end
297
+ end
298
+
299
+ let(:inner_hits_hash) do
300
+ { name: 'last_tweet',
301
+ size: 10,
302
+ from: 5,
303
+ sort: [ { date: { order: 'desc' } },
304
+ { likes: { order: 'asc' } }]
305
+ }
306
+ end
307
+
308
+ let(:expected_hash) do
309
+ { query: { match: { title: 'test' } },
310
+ collapse: { field: :user,
311
+ max_concurrent_group_searches: 4,
312
+ inner_hits: inner_hits_hash } }
313
+ end
314
+
315
+ it 'sets the field name' do
316
+ expect(s.to_hash[:collapse][:field]).to eq(:user)
317
+ end
318
+
319
+ it 'sets the max_concurrent_group_searches option' do
320
+ expect(s.to_hash[:collapse][:max_concurrent_group_searches]).to eq(4)
321
+ end
322
+
323
+ it 'sets the inner_hits' do
324
+ expect(s.to_hash[:collapse][:inner_hits]).to eq(inner_hits_hash)
325
+ end
326
+
327
+ it 'constructs the correct hash' do
328
+ expect(s.to_hash).to eq(expected_hash)
329
+ end
330
+ end
331
+
332
+ describe '#collapse' do
333
+
334
+ let(:s) do
335
+ search do
336
+ query do
337
+ match title: 'test'
338
+ end
339
+ collapse :user do
340
+ max_concurrent_group_searches 4
341
+ inner_hits 'last_tweet' do
342
+ size 10
343
+ from 5
344
+ sort do
345
+ by :date, order: 'desc'
346
+ by :likes, order: 'asc'
347
+ end
348
+ end
349
+ end
350
+ end
351
+ end
352
+
353
+ let(:inner_hits_hash) do
354
+ { name: 'last_tweet',
355
+ size: 10,
356
+ from: 5,
357
+ sort: [ { date: { order: 'desc' } },
358
+ { likes: { order: 'asc' } }]
359
+ }
360
+ end
361
+
362
+ let(:expected_hash) do
363
+ { query: { match: { title: 'test' } },
364
+ collapse: { field: :user,
365
+ max_concurrent_group_searches: 4,
366
+ inner_hits: inner_hits_hash } }
367
+ end
368
+
369
+ it 'sets the field name' do
370
+ expect(s.to_hash[:collapse][:field]).to eq(:user)
371
+ end
372
+
373
+ it 'sets the max_concurrent_group_searches option' do
374
+ expect(s.to_hash[:collapse][:max_concurrent_group_searches]).to eq(4)
375
+ end
376
+
377
+ it 'sets the inner_hits' do
378
+ expect(s.to_hash[:collapse][:inner_hits]).to eq(inner_hits_hash)
379
+ end
380
+
381
+ it 'constructs the correct hash' do
382
+ expect(s.to_hash).to eq(expected_hash)
383
+ end
384
+ end
385
+ end
@@ -0,0 +1,24 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'elasticsearch'
19
+ require 'elasticsearch-dsl'
20
+
21
+ RSpec.configure do |config|
22
+ config.formatter = 'documentation'
23
+ config.color = true
24
+ end
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
 
3
20
  module Elasticsearch
@@ -6,50 +23,40 @@ module Elasticsearch
6
23
  include Elasticsearch::DSL::Search
7
24
 
8
25
  context "A children aggregation" do
9
- startup do
10
- Elasticsearch::Extensions::Test::Cluster.start(number_of_nodes: 1) if ENV['SERVER'] and not Elasticsearch::Extensions::Test::Cluster.running?(number_of_nodes: 1)
11
- end
12
-
13
26
  setup do
14
- @client.indices.create index: 'articles-test', body: {
15
- mappings: {
16
- article: {
17
- properties: {
18
- title: { type: 'text' },
19
- category: { type: 'keyword' }
20
- }
21
- },
22
- comment: {
23
- _routing: { required: true },
24
- _parent: { type: 'article' },
25
- properties: {
26
- author: { type: 'keyword' }
27
- }
27
+ @client.indices.create index: 'articles-and-comments', body: {
28
+ mappings: {
29
+ properties: {
30
+ title: {type: 'text'},
31
+ category: {type: 'keyword'},
32
+ join_field: {type: 'join', relations: {article: 'comment'}},
33
+ author: {type: 'keyword'}
34
+ }
28
35
  }
29
- }
30
36
  }
31
- @client.index index: 'articles-test', type: 'article', id: 1,
32
- body: { title: 'A', category: 'one' }
33
- @client.index index: 'articles-test', type: 'article', id: 2,
34
- body: { title: 'B', category: 'one' }
35
- @client.index index: 'articles-test', type: 'article', id: 3,
36
- body: { title: 'C', category: 'two' }
37
37
 
38
- @client.index index: 'articles-test', type: 'comment', parent: '1',
39
- body: { author: 'John' }
40
- @client.index index: 'articles-test', type: 'comment', parent: '1',
41
- body: { author: 'Mary' }
42
- @client.index index: 'articles-test', type: 'comment', parent: '2',
43
- body: { author: 'John' }
44
- @client.index index: 'articles-test', type: 'comment', parent: '2',
45
- body: { author: 'Dave' }
46
- @client.index index: 'articles-test', type: 'comment', parent: '3',
47
- body: { author: 'Ruth' }
48
- @client.indices.refresh index: 'articles-test'
38
+ @client.index index: 'articles-and-comments', id: 1,
39
+ body: { title: 'A', category: 'one', join_field: 'article' }
40
+ @client.index index: 'articles-and-comments', id: 2,
41
+ body: { title: 'B', category: 'one', join_field: 'article' }
42
+ @client.index index: 'articles-and-comments', id: 3,
43
+ body: { title: 'C', category: 'two', join_field: 'article' }
44
+
45
+ @client.index index: 'articles-and-comments', routing: '1',
46
+ body: { author: 'John', join_field: { name: 'comment', parent: 1 } }
47
+ @client.index index: 'articles-and-comments', routing: '1',
48
+ body: { author: 'Mary', join_field: { name: 'comment', parent: 1 } }
49
+ @client.index index: 'articles-and-comments', routing: '2',
50
+ body: { author: 'John', join_field: { name: 'comment', parent: 2 } }
51
+ @client.index index: 'articles-and-comments', routing: '2',
52
+ body: { author: 'Dave', join_field: { name: 'comment', parent: 2 } }
53
+ @client.index index: 'articles-and-comments', routing: '3',
54
+ body: { author: 'Ruth', join_field: { name: 'comment', parent: 3 } }
55
+ @client.indices.refresh index: 'articles-and-comments'
49
56
  end
50
57
 
51
58
  should "return the top commenters per article category" do
52
- response = @client.search index: 'articles-test', size: 0, body: search {
59
+ response = @client.search index: 'articles-and-comments', size: 0, body: search {
53
60
  aggregation :top_categories do
54
61
  terms field: 'category' do
55
62
  aggregation :comments do
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
 
3
20
  module Elasticsearch
@@ -6,29 +23,23 @@ module Elasticsearch
6
23
  include Elasticsearch::DSL::Search
7
24
 
8
25
  context "A geo aggregation" do
9
- startup do
10
- Elasticsearch::Extensions::Test::Cluster.start(number_of_nodes: 1) if ENV['SERVER'] and not Elasticsearch::Extensions::Test::Cluster.running?(number_of_nodes: 1)
11
- end
12
-
13
26
  setup do
14
27
  @client.indices.create index: 'venues-test', body: {
15
- mappings: {
16
- venue: {
17
- properties: {
18
- location: { type: 'geo_point' }
19
- }
28
+ mappings: {
29
+ properties: {
30
+ location: {type: 'geo_point'}
31
+ }
20
32
  }
21
- }
22
33
  }
23
- @client.index index: 'venues-test', type: 'venue',
34
+ @client.index index: 'venues-test',
24
35
  body: { name: 'Space', location: "38.886214,1.403889" }
25
- @client.index index: 'venues-test', type: 'venue',
36
+ @client.index index: 'venues-test',
26
37
  body: { name: 'Pacha', location: "38.9184427,1.4433646" }
27
- @client.index index: 'venues-test', type: 'venue',
38
+ @client.index index: 'venues-test',
28
39
  body: { name: 'Amnesia', location: "38.948045,1.408341" }
29
- @client.index index: 'venues-test', type: 'venue',
40
+ @client.index index: 'venues-test',
30
41
  body: { name: 'Privilege', location: "38.958082,1.408288" }
31
- @client.index index: 'venues-test', type: 'venue',
42
+ @client.index index: 'venues-test',
32
43
  body: { name: 'Es Paradis', location: "38.979071,1.307394" }
33
44
  @client.indices.refresh index: 'venues-test'
34
45
  end
@@ -55,7 +66,7 @@ module Elasticsearch
55
66
  assert_equal 1, result['buckets'][0]['doc_count']
56
67
  assert_equal 'Pacha', result['buckets'][0]['top_venues']['hits']['hits'][0]['_source']['name']
57
68
 
58
- assert_equal 2, result['buckets'][1]['top_venues']['hits']['total']
69
+ assert_equal 2, result['buckets'][1]['top_venues']['hits']['total']['value']
59
70
  end
60
71
 
61
72
  should "return the geohash grid distribution" do
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
 
3
20
  module Elasticsearch
@@ -6,37 +23,32 @@ module Elasticsearch
6
23
  include Elasticsearch::DSL::Search
7
24
 
8
25
  context "A nested aggregation" do
9
- startup do
10
- Elasticsearch::Extensions::Test::Cluster.start(number_of_nodes: 1) if ENV['SERVER'] and not Elasticsearch::Extensions::Test::Cluster.running?(number_of_nodes: 1)
11
- end
12
-
13
26
  setup do
14
27
  @client.indices.create index: 'products-test', body: {
15
- mappings: {
16
- product: {
17
- properties: {
18
- title: { type: 'text' },
19
- category: { type: 'keyword' },
20
- offers: {
21
- type: 'nested',
22
- properties: {
23
- name: { type: 'text' },
24
- price: { type: 'double' }
25
- }
28
+ mappings: {
29
+ properties: {
30
+ title: {type: 'text'},
31
+ category: {type: 'keyword'},
32
+ offers: {
33
+ type: 'nested',
34
+ properties: {
35
+ name: {type: 'text'},
36
+ price: {type: 'double'}
37
+ }
38
+ }
26
39
  }
27
- }
28
40
  }
29
- }
30
41
  }
31
- @client.index index: 'products-test', type: 'product',
42
+
43
+ @client.index index: 'products-test',
32
44
  body: { title: 'A',
33
45
  category: 'audio',
34
46
  offers: [ { name: 'A1', price: 100 }, { name: 'A2', price: 120 } ] }
35
- @client.index index: 'products-test', type: 'product',
47
+ @client.index index: 'products-test',
36
48
  body: { title: 'B',
37
49
  category: 'audio',
38
50
  offers: [ { name: 'B1', price: 200 }, { name: 'B2', price: 180 } ] }
39
- @client.index index: 'products-test', type: 'product',
51
+ @client.index index: 'products-test',
40
52
  body: { title: 'C',
41
53
  category: 'video',
42
54
  offers: [ { name: 'C1', price: 300 }, { name: 'C2', price: 350 } ] }