eson-dsl 0.7.0

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 (240) hide show
  1. data/LICENSE.md +20 -0
  2. data/README.md +179 -0
  3. data/Rakefile +30 -0
  4. data/TODO.md +1 -0
  5. data/eson-dsl.gemspec +21 -0
  6. data/examples/facets/date_histogram.rb +5 -0
  7. data/examples/facets/filter.rb +7 -0
  8. data/examples/facets/geo_distance.rb +14 -0
  9. data/examples/facets/histogram.rb +5 -0
  10. data/examples/facets/query.rb +7 -0
  11. data/examples/facets/range.rb +8 -0
  12. data/examples/facets/scoped.rb +17 -0
  13. data/examples/facets/statistical.rb +5 -0
  14. data/examples/facets/term_stats.rb +9 -0
  15. data/examples/facets/terms.rb +8 -0
  16. data/examples/filters/and.rb +11 -0
  17. data/examples/filters/and_without_keyword.rb +9 -0
  18. data/examples/filters/bool.rb +16 -0
  19. data/examples/filters/exists.rb +9 -0
  20. data/examples/filters/fquery.rb +11 -0
  21. data/examples/filters/geo_bounding_box.rb +8 -0
  22. data/examples/filters/geo_distance.rb +8 -0
  23. data/examples/filters/geo_distance_alternate.rb +9 -0
  24. data/examples/filters/geo_distance_range.rb +10 -0
  25. data/examples/filters/geo_polygon.rb +10 -0
  26. data/examples/filters/has_child.rb +9 -0
  27. data/examples/filters/ids.rb +8 -0
  28. data/examples/filters/missing.rb +9 -0
  29. data/examples/filters/not.rb +10 -0
  30. data/examples/filters/numeric_range.rb +9 -0
  31. data/examples/filters/or.rb +11 -0
  32. data/examples/filters/range.rb +5 -0
  33. data/examples/filters/type.rb +5 -0
  34. data/examples/queries/bool.rb +16 -0
  35. data/examples/queries/boosting.rb +12 -0
  36. data/examples/queries/constant_score.rb +9 -0
  37. data/examples/queries/constant_score_with_filter.rb +9 -0
  38. data/examples/queries/custom_score.rb +15 -0
  39. data/examples/queries/dis_max.rb +10 -0
  40. data/examples/queries/field.rb +5 -0
  41. data/examples/queries/filters_and_facets.rb +11 -0
  42. data/examples/queries/flt.rb +7 -0
  43. data/examples/queries/flt_field.rb +7 -0
  44. data/examples/queries/fuzzy.rb +5 -0
  45. data/examples/queries/fuzzy_complex.rb +5 -0
  46. data/examples/queries/has_child.rb +9 -0
  47. data/examples/queries/has_child_complex.rb +12 -0
  48. data/examples/queries/ids.rb +5 -0
  49. data/examples/queries/match_all.rb +5 -0
  50. data/examples/queries/mlt.rb +7 -0
  51. data/examples/queries/mlt_field.rb +7 -0
  52. data/examples/queries/nested.rb +12 -0
  53. data/examples/queries/prefix.rb +5 -0
  54. data/examples/queries/prefix_short.rb +5 -0
  55. data/examples/queries/query_string.rb +6 -0
  56. data/examples/queries/query_string_with_multiple_fields.rb +7 -0
  57. data/examples/queries/query_string_without_default_field.rb +5 -0
  58. data/examples/queries/range.rb +5 -0
  59. data/examples/queries/span_first.rb +7 -0
  60. data/examples/queries/span_near.rb +11 -0
  61. data/examples/queries/span_not.rb +8 -0
  62. data/examples/queries/span_or.rb +11 -0
  63. data/examples/queries/span_term.rb +5 -0
  64. data/examples/queries/term.rb +5 -0
  65. data/examples/queries/term_with_parameters.rb +5 -0
  66. data/examples/queries/terms.rb +5 -0
  67. data/examples/queries/text.rb +5 -0
  68. data/examples/queries/top_children.rb +7 -0
  69. data/examples/queries/wildcard.rb +5 -0
  70. data/examples/queries/wildcard_short.rb +5 -0
  71. data/lib/eson/modules/query_plugin.rb +44 -0
  72. data/lib/eson/search/and.rb +27 -0
  73. data/lib/eson/search/base_query.rb +39 -0
  74. data/lib/eson/search/bool.rb +51 -0
  75. data/lib/eson/search/boosting.rb +45 -0
  76. data/lib/eson/search/constant_score.rb +21 -0
  77. data/lib/eson/search/custom_score.rb +19 -0
  78. data/lib/eson/search/date_histogram.rb +13 -0
  79. data/lib/eson/search/dis_max.rb +22 -0
  80. data/lib/eson/search/exists.rb +18 -0
  81. data/lib/eson/search/facet.rb +39 -0
  82. data/lib/eson/search/facets.rb +37 -0
  83. data/lib/eson/search/field.rb +16 -0
  84. data/lib/eson/search/field_based.rb +24 -0
  85. data/lib/eson/search/filter.rb +28 -0
  86. data/lib/eson/search/filter_facet.rb +13 -0
  87. data/lib/eson/search/filters.rb +69 -0
  88. data/lib/eson/search/fquery.rb +22 -0
  89. data/lib/eson/search/fuzzy.rb +29 -0
  90. data/lib/eson/search/fuzzy_like_this.rb +16 -0
  91. data/lib/eson/search/fuzzy_like_this_field.rb +20 -0
  92. data/lib/eson/search/geo_bounding_box.rb +35 -0
  93. data/lib/eson/search/geo_distance.rb +34 -0
  94. data/lib/eson/search/geo_distance_range.rb +29 -0
  95. data/lib/eson/search/geo_polygon.rb +32 -0
  96. data/lib/eson/search/has_child.rb +29 -0
  97. data/lib/eson/search/histogram.rb +20 -0
  98. data/lib/eson/search/ids.rb +27 -0
  99. data/lib/eson/search/match_all.rb +21 -0
  100. data/lib/eson/search/missing.rb +21 -0
  101. data/lib/eson/search/more_like_this.rb +16 -0
  102. data/lib/eson/search/more_like_this_field.rb +20 -0
  103. data/lib/eson/search/nested.rb +24 -0
  104. data/lib/eson/search/node.rb +28 -0
  105. data/lib/eson/search/not.rb +23 -0
  106. data/lib/eson/search/numeric_range.rb +20 -0
  107. data/lib/eson/search/or.rb +23 -0
  108. data/lib/eson/search/parametrized.rb +15 -0
  109. data/lib/eson/search/prefix.rb +22 -0
  110. data/lib/eson/search/queries.rb +65 -0
  111. data/lib/eson/search/query.rb +28 -0
  112. data/lib/eson/search/query_facet.rb +16 -0
  113. data/lib/eson/search/query_field.rb +33 -0
  114. data/lib/eson/search/query_group.rb +34 -0
  115. data/lib/eson/search/query_string.rb +20 -0
  116. data/lib/eson/search/range.rb +26 -0
  117. data/lib/eson/search/span_first.rb +27 -0
  118. data/lib/eson/search/span_near.rb +29 -0
  119. data/lib/eson/search/span_not.rb +29 -0
  120. data/lib/eson/search/span_or.rb +29 -0
  121. data/lib/eson/search/span_term.rb +18 -0
  122. data/lib/eson/search/statistical.rb +20 -0
  123. data/lib/eson/search/sub_query.rb +7 -0
  124. data/lib/eson/search/term.rb +22 -0
  125. data/lib/eson/search/terms.rb +22 -0
  126. data/lib/eson/search/terms_stats.rb +20 -0
  127. data/lib/eson/search/text.rb +23 -0
  128. data/lib/eson/search/top_children.rb +28 -0
  129. data/lib/eson/search/type.rb +20 -0
  130. data/lib/eson/search/wildcard.rb +18 -0
  131. data/lib/eson-dsl.rb +64 -0
  132. data/log4j.properties +18 -0
  133. data/test/search/facet_test.rb +92 -0
  134. data/test/search/facets/date_histogram.documents +1 -0
  135. data/test/search/facets/date_histogram.mapping +1 -0
  136. data/test/search/facets/date_histogram.rb +13 -0
  137. data/test/search/facets/geo_distance.documents +1 -0
  138. data/test/search/facets/geo_distance.mapping +8 -0
  139. data/test/search/facets/geo_distance.rb +1 -0
  140. data/test/search/facets/histogram.documents +1 -0
  141. data/test/search/facets/histogram.rb +13 -0
  142. data/test/search/facets/query.documents +1 -0
  143. data/test/search/facets/query.rb +14 -0
  144. data/test/search/facets/range.documents +1 -0
  145. data/test/search/facets/range.rb +17 -0
  146. data/test/search/facets/scoped.documents +1 -0
  147. data/test/search/facets/scoped.json +1 -0
  148. data/test/search/facets/scoped.mapping +9 -0
  149. data/test/search/facets/statistical.documents +1 -0
  150. data/test/search/facets/statistical.rb +12 -0
  151. data/test/search/facets/tag_facet.documents +1 -0
  152. data/test/search/facets/tag_facet.rb +14 -0
  153. data/test/search/facets/terms.rb +14 -0
  154. data/test/search/facets/terms_stats.documents +1 -0
  155. data/test/search/facets/terms_stats.json +1 -0
  156. data/test/search/facets/terms_stats.rb +13 -0
  157. data/test/search/filters/and.rb +15 -0
  158. data/test/search/filters/bool.json +1 -0
  159. data/test/search/filters/bool.rb +27 -0
  160. data/test/search/filters/exists.json +1 -0
  161. data/test/search/filters/exists.rb +1 -0
  162. data/test/search/filters/filter_query.rb +14 -0
  163. data/test/search/filters/geo_bounding_box_hash.documents +1 -0
  164. data/test/search/filters/geo_bounding_box_hash.json +1 -0
  165. data/test/search/filters/geo_bounding_box_hash.mapping +8 -0
  166. data/test/search/filters/geo_distance_hash.documents +1 -0
  167. data/test/search/filters/geo_distance_hash.json +1 -0
  168. data/test/search/filters/geo_distance_hash.mapping +8 -0
  169. data/test/search/filters/geo_distance_range_hash.documents +1 -0
  170. data/test/search/filters/geo_distance_range_hash.json +1 -0
  171. data/test/search/filters/geo_distance_range_hash.mapping +8 -0
  172. data/test/search/filters/geo_polygon_hash.documents +1 -0
  173. data/test/search/filters/geo_polygon_hash.json +1 -0
  174. data/test/search/filters/geo_polygon_hash.mapping +8 -0
  175. data/test/search/filters/has_child.blog.mapping +1 -0
  176. data/test/search/filters/has_child.blog_tag.mapping +1 -0
  177. data/test/search/filters/has_child.rb +15 -0
  178. data/test/search/filters/ids.rb +14 -0
  179. data/test/search/filters/missing.rb +1 -0
  180. data/test/search/filters/not.rb +16 -0
  181. data/test/search/filters/numeric_range.documents +1 -0
  182. data/test/search/filters/numeric_range.rb +1 -0
  183. data/test/search/filters/or.rb +15 -0
  184. data/test/search/filters/range.rb +16 -0
  185. data/test/search/filters/type.json +1 -0
  186. data/test/search/filters/type.rb +1 -0
  187. data/test/search/filters_test.rb +166 -0
  188. data/test/search/queries/bool.json +1 -0
  189. data/test/search/queries/bool.rb +21 -0
  190. data/test/search/queries/boosting.json +1 -0
  191. data/test/search/queries/boosting.rb +17 -0
  192. data/test/search/queries/constant_score.rb +10 -0
  193. data/test/search/queries/constant_score_filter.rb +10 -0
  194. data/test/search/queries/custom_score.documents +1 -0
  195. data/test/search/queries/custom_score.rb +14 -0
  196. data/test/search/queries/dis_max.rb +15 -0
  197. data/test/search/queries/field.rb +7 -0
  198. data/test/search/queries/filters_and_facets.documents +1 -0
  199. data/test/search/queries/filters_and_facets.json +1 -0
  200. data/test/search/queries/flt.rb +9 -0
  201. data/test/search/queries/flt_field.rb +10 -0
  202. data/test/search/queries/fuzzy_complex.rb +5 -0
  203. data/test/search/queries/fuzzy_simple.rb +5 -0
  204. data/test/search/queries/has_child.blog.mapping +1 -0
  205. data/test/search/queries/has_child.blog_tag.mapping +1 -0
  206. data/test/search/queries/has_child.rb +10 -0
  207. data/test/search/queries/has_child_complex.blog.mapping +1 -0
  208. data/test/search/queries/has_child_complex.blog_tag.mapping +1 -0
  209. data/test/search/queries/has_child_complex.rb +17 -0
  210. data/test/search/queries/ids.rb +1 -0
  211. data/test/search/queries/match_all.rb +1 -0
  212. data/test/search/queries/mlt.json +1 -0
  213. data/test/search/queries/mlt.rb +9 -0
  214. data/test/search/queries/mlt_field.rb +10 -0
  215. data/test/search/queries/nested.json +1 -0
  216. data/test/search/queries/nested.mapping +9 -0
  217. data/test/search/queries/phrase_prefix.rb +8 -0
  218. data/test/search/queries/prefix.rb +1 -0
  219. data/test/search/queries/prefix_short.rb +1 -0
  220. data/test/search/queries/query_string.rb +8 -0
  221. data/test/search/queries/query_string_with_multiple_fields.rb +9 -0
  222. data/test/search/queries/query_string_without_default_field.rb +7 -0
  223. data/test/search/queries/range.rb +11 -0
  224. data/test/search/queries/span_near.json +1 -0
  225. data/test/search/queries/span_not.json +1 -0
  226. data/test/search/queries/span_or.json +1 -0
  227. data/test/search/queries/span_term.json +1 -0
  228. data/test/search/queries/term.json +1 -0
  229. data/test/search/queries/term.rb +1 -0
  230. data/test/search/queries/terms.rb +1 -0
  231. data/test/search/queries/text.json +1 -0
  232. data/test/search/queries/text.rb +8 -0
  233. data/test/search/queries/top_children.blog.mapping +1 -0
  234. data/test/search/queries/top_children.blog_tag.mapping +1 -0
  235. data/test/search/queries/top_children.rb +11 -0
  236. data/test/search/queries/wildcard.rb +1 -0
  237. data/test/search/queries/wildcard_short.rb +1 -0
  238. data/test/search/query_test.rb +311 -0
  239. data/test/test_config.rb +157 -0
  240. metadata +413 -0
@@ -0,0 +1,311 @@
1
+ require './test/test_config'
2
+
3
+ context "Queries" do
4
+ setup do
5
+ create_index :index => "default"
6
+ end
7
+
8
+ context "#term" do
9
+ query_name "test/search/queries/term"
10
+
11
+ setup do
12
+ example("queries/term")
13
+ end
14
+ end
15
+
16
+ context "#term with parameters" do
17
+ query_name "test/search/queries/term"
18
+
19
+ setup do
20
+ example("queries/term_with_parameters")
21
+ end
22
+ end
23
+
24
+ context "#wildcard" do
25
+ query_name "test/search/queries/wildcard"
26
+
27
+ setup do
28
+ example("queries/wildcard")
29
+ end
30
+ end
31
+
32
+ context "#wildcard short style" do
33
+ query_name "test/search/queries/wildcard_short"
34
+
35
+ setup do
36
+ example("queries/wildcard_short")
37
+ end
38
+ end
39
+
40
+ context "#prefix" do
41
+ query_name "test/search/queries/prefix"
42
+
43
+ setup do
44
+ example("queries/prefix")
45
+ end
46
+ end
47
+
48
+ context "#prefix short style" do
49
+ query_name "test/search/queries/prefix_short"
50
+
51
+ setup do
52
+ example("queries/prefix_short")
53
+ end
54
+ end
55
+
56
+ context "#match_all" do
57
+ query_name "test/search/queries/match_all"
58
+
59
+ setup do
60
+ example("queries/match_all")
61
+ end
62
+ end
63
+
64
+ context "#terms" do
65
+ query_name "test/search/queries/terms"
66
+
67
+ setup do
68
+ example("queries/terms")
69
+ end
70
+ end
71
+
72
+ context "#ids" do
73
+ query_name "test/search/queries/ids"
74
+
75
+ setup do
76
+ example("queries/ids")
77
+ end
78
+ end
79
+
80
+ context '#range query' do
81
+ query_name "test/search/queries/range"
82
+
83
+ setup do
84
+ example("queries/range")
85
+ end
86
+ end
87
+
88
+ context "#constant_score query" do
89
+ query_name "test/search/queries/constant_score"
90
+
91
+ setup do
92
+ example("queries/constant_score")
93
+ end
94
+ end
95
+
96
+ context "#constant_store query with filter" do
97
+ query_name "test/search/queries/constant_score_filter"
98
+
99
+ setup do
100
+ example("queries/constant_score_with_filter")
101
+ end
102
+ end
103
+
104
+ context "#text query" do
105
+ query_name "test/search/queries/text"
106
+
107
+ setup do
108
+ example("queries/text")
109
+ end
110
+ end
111
+
112
+ context "#bool query" do
113
+ query_name "test/search/queries/bool"
114
+
115
+ setup do
116
+ example("queries/bool")
117
+ end
118
+ end
119
+
120
+
121
+ context "#boosting query" do
122
+ query_name "test/search/queries/boosting"
123
+
124
+ setup do
125
+ example("queries/boosting")
126
+ end
127
+ end
128
+
129
+ context "#custom_score query" do
130
+ query_name "test/search/queries/custom_score"
131
+
132
+ setup do
133
+ example("queries/custom_score")
134
+ end
135
+ end
136
+
137
+ context "#dis_max query" do
138
+ query_name "test/search/queries/dis_max"
139
+
140
+ setup do
141
+ example("queries/dis_max")
142
+ end
143
+ end
144
+
145
+ context "#field query" do
146
+ query_name "test/search/queries/field"
147
+
148
+ setup do
149
+ example("queries/field")
150
+ end
151
+ end
152
+
153
+ context "#flt query" do
154
+ query_name "test/search/queries/flt"
155
+
156
+ setup do
157
+ example("queries/flt")
158
+ end
159
+
160
+ end
161
+
162
+ context "#flt_field query" do
163
+ query_name "test/search/queries/flt_field"
164
+
165
+ setup do
166
+ example("queries/flt_field")
167
+ end
168
+ end
169
+
170
+ context "#fuzzy simple query" do
171
+ query_name "test/search/queries/fuzzy_simple"
172
+
173
+ setup do
174
+ example("queries/fuzzy")
175
+ end
176
+ end
177
+
178
+ context "#fuzzy complex query" do
179
+ query_name "test/search/queries/fuzzy_complex"
180
+
181
+ setup do
182
+ example("queries/fuzzy_complex")
183
+ end
184
+
185
+ end
186
+
187
+ context "#has_child query" do
188
+ query_name "test/search/queries/has_child"
189
+ set :type, "blog_tag"
190
+ set :index, "has_child_query"
191
+
192
+ setup do
193
+ example("queries/has_child")
194
+ end
195
+ end
196
+
197
+ context "complex #has_child query" do
198
+ query_name "test/search/queries/has_child_complex"
199
+ set :type, "blog_tag"
200
+ set :index, "has_child_query"
201
+
202
+ setup do
203
+ example("queries/has_child_complex")
204
+ end
205
+ end
206
+
207
+ context "#mlt query" do
208
+ query_name "test/search/queries/mlt"
209
+ set :type, "bar"
210
+
211
+ setup do
212
+ example("queries/mlt")
213
+ end
214
+ end
215
+
216
+ context "#mlt_field query" do
217
+ query_name "test/search/queries/mlt_field"
218
+
219
+ setup do
220
+ example("queries/mlt_field")
221
+ end
222
+ end
223
+
224
+ context "#query_string" do
225
+ query_name "test/search/queries/query_string"
226
+
227
+ setup do
228
+ example("queries/query_string")
229
+ end
230
+ end
231
+
232
+ context "#query_string" do
233
+ query_name "test/search/queries/query_string_without_default_field"
234
+
235
+ setup do
236
+ example("queries/query_string_without_default_field")
237
+ end
238
+ end
239
+
240
+ context "#query_string with multiple fields" do
241
+ query_name "test/search/queries/query_string_with_multiple_fields"
242
+
243
+ setup do
244
+ example("queries/query_string_with_multiple_fields")
245
+ end
246
+ end
247
+
248
+ context "#top_children query" do
249
+ query_name "test/search/queries/top_children"
250
+
251
+ setup do
252
+ example("queries/top_children")
253
+ end
254
+ end
255
+
256
+ context "query with filter and facets" do
257
+ query_name "test/search/queries/filters_and_facets"
258
+
259
+ setup do
260
+ example("queries/filters_and_facets")
261
+ end
262
+ end
263
+
264
+ context "nested queries" do
265
+ query_name "test/search/queries/nested"
266
+
267
+ setup do
268
+ example("queries/nested")
269
+ end
270
+ end
271
+
272
+ context "span_or query" do
273
+ query_name "test/search/queries/span_or"
274
+
275
+ setup do
276
+ example("queries/span_or")
277
+ end
278
+ end
279
+
280
+ context "span_near query" do
281
+ query_name "test/search/queries/span_near"
282
+
283
+ setup do
284
+ example("queries/span_near")
285
+ end
286
+ end
287
+
288
+ context "span_first query" do
289
+ query_name "test/search/queries/span_first"
290
+
291
+ setup do
292
+ example("queries/span_first")
293
+ end
294
+ end
295
+
296
+ context "span_not query" do
297
+ query_name "test/search/queries/span_not"
298
+
299
+ setup do
300
+ example("queries/span_not")
301
+ end
302
+ end
303
+
304
+ context "span_term query" do
305
+ query_name "test/search/queries/span_term"
306
+
307
+ setup do
308
+ example("queries/span_term")
309
+ end
310
+ end
311
+ end
@@ -0,0 +1,157 @@
1
+ begin
2
+ # Require the preresolved locked set of gems.
3
+ require File.expand_path('../../.bundle/environment', __FILE__)
4
+ rescue LoadError
5
+ # Fallback on doing the resolve at runtime.
6
+ require 'rubygems'
7
+ require 'bundler'
8
+ Bundler.setup
9
+ end
10
+
11
+ Bundler.require(:test, :default)
12
+
13
+ require 'eson-dsl'
14
+ require 'faraday'
15
+ require 'elasticsearch-node/external'
16
+
17
+ module Node
18
+ module External
19
+ def self.instance
20
+ @node ||= begin
21
+ node = ElasticSearch::Node::External.new("gateway.type" => "none") do
22
+ def client
23
+ conn = Faraday.new(:url => "http://#{self.ip}:#{self.port}") do |builder|
24
+ #builder.response :raise_error
25
+ builder.request :json
26
+ builder.adapter :net_http
27
+ end
28
+ end
29
+ end
30
+ at_exit do
31
+ node.close
32
+ end
33
+ node
34
+ end
35
+ end
36
+ end
37
+
38
+ end
39
+ Node::External.instance
40
+
41
+ require 'riot'
42
+
43
+ #Riot.dots
44
+
45
+ class EsonQueries < Riot::ContextMiddleware
46
+ register
47
+
48
+ def call(context)
49
+ middleware.call(context)
50
+
51
+ return unless context.option(:query_name)
52
+
53
+ type = context.option(:type) || "bar"
54
+ index = context.option(:index) || "default"
55
+ file = context.option(:query_name)
56
+
57
+ Dir["#{file}*.documents"].each do |f|
58
+
59
+ f.match(/\A[^.]+(?:\.([^.]*))?.documents\Z/)
60
+ type = $1 if $1
61
+
62
+ context.setup(true) do
63
+ create_index :index => index
64
+
65
+ File.open(f) do |p|
66
+ begin
67
+ p.each_line do |l|
68
+ index_doc :index => index,
69
+ :source => l,
70
+ :type => type
71
+ end
72
+ rescue Exception => e
73
+ puts e.inspect
74
+ raise e
75
+ end
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ Dir["#{file}*.mapping"].each do |f|
82
+ context.setup(true) do
83
+ f.match(/\A[^.]+(?:\.([^.]*))?.mapping\Z/)
84
+ type = $1 if $1
85
+
86
+ delete_mapping :index => index, :type => type
87
+
88
+ create_index :index => index
89
+ put_mapping :index => index,
90
+ :type => type,
91
+ :source => File.read(f)
92
+ end
93
+ end
94
+
95
+ if File.exists?("#{file}.rb")
96
+ context.asserts(:to_query_hash).equals(eval(File.read("#{file}.rb")))
97
+ end
98
+
99
+ if File.exists?("#{file}.json")
100
+ context.asserts("json format") do
101
+ MultiJson.decode(MultiJson.encode(topic.to_query_hash))
102
+ end.equals(MultiJson.decode(File.read("#{file}.json").strip))
103
+ end
104
+
105
+ context.asserts("search status") do
106
+ begin
107
+ result = search :index => index, :type => type, :query => topic
108
+ result.status
109
+ rescue Exception => e
110
+ puts e.inspect
111
+ raise e
112
+ end
113
+ end.equals(200)
114
+
115
+ end
116
+ end
117
+
118
+ class Riot::Context
119
+ def query_name(name)
120
+ set :query_name, name
121
+ end
122
+ end
123
+
124
+ class Riot::Situation
125
+ def node
126
+ Node::External.instance
127
+ end
128
+
129
+ def create_index(opts)
130
+ node.client.post "/#{opts[:index]}"
131
+ end
132
+
133
+ def index_doc(opts)
134
+ node.client.post "/#{opts[:index]}/#{opts[:type]}", opts[:source]
135
+ end
136
+
137
+ def delete_mapping(opts)
138
+ node.client.delete "/#{opts[:index]}/#{opts[:type]}"
139
+ end
140
+
141
+ def put_mapping(opts)
142
+ node.client.put "/#{opts[:index]}/#{opts[:type]}/_mapping", opts[:source]
143
+ end
144
+
145
+ def search(opts)
146
+ source = opts[:query].to_query_hash
147
+ if opts[:type]
148
+ node.client.post "/#{opts[:index]}/#{opts[:type]}/_search", source
149
+ else
150
+ node.client.post "/#{opts[:index]}/_search", source
151
+ end
152
+ end
153
+
154
+ def example(file)
155
+ eval(File.read(File.expand_path(File.join('examples', "#{file}.rb"))))
156
+ end
157
+ end