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.
- checksums.yaml +5 -5
- data/Gemfile +30 -8
- data/LICENSE.txt +199 -10
- data/README.md +62 -27
- data/Rakefile +29 -17
- data/elasticsearch-dsl.gemspec +40 -22
- data/lib/elasticsearch/dsl/search/aggregation.rb +21 -2
- data/lib/elasticsearch/dsl/search/aggregations/avg.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/cardinality.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/children.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/composite.rb +60 -0
- data/lib/elasticsearch/dsl/search/aggregations/date_histogram.rb +23 -5
- data/lib/elasticsearch/dsl/search/aggregations/date_range.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/extended_stats.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/filter.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/filters.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/geo_bounds.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/geo_distance.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/geohash_grid.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/global.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/histogram.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/ip_range.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/max.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/min.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/missing.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/nested.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/percentile_ranks.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/percentiles.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_script.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_sort.rb +106 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/derivative.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/max_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/min_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/moving_avg.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/serial_diff.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/range.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/reverse_nested.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/scripted_metric.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/significant_terms.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/significant_text.rb +62 -0
- data/lib/elasticsearch/dsl/search/aggregations/stats.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/sum.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/terms.rb +17 -0
- data/lib/elasticsearch/dsl/search/aggregations/top_hits.rb +18 -1
- data/lib/elasticsearch/dsl/search/aggregations/value_count.rb +18 -1
- data/lib/elasticsearch/dsl/search/base_aggregation_component.rb +20 -1
- data/lib/elasticsearch/dsl/search/base_component.rb +30 -1
- data/lib/elasticsearch/dsl/search/base_compound_filter_component.rb +20 -1
- data/lib/elasticsearch/dsl/search/collapse.rb +95 -0
- data/lib/elasticsearch/dsl/search/filter.rb +21 -2
- data/lib/elasticsearch/dsl/search/filters/and.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/bool.rb +23 -4
- data/lib/elasticsearch/dsl/search/filters/exists.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/geo_bounding_box.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/geo_distance.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/geo_distance_range.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/geo_polygon.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/geo_shape.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/geohash_cell.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/has_child.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/has_parent.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/ids.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/indices.rb +19 -2
- data/lib/elasticsearch/dsl/search/filters/limit.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/match_all.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/missing.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/nested.rb +27 -1
- data/lib/elasticsearch/dsl/search/filters/not.rb +21 -2
- data/lib/elasticsearch/dsl/search/filters/or.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/prefix.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/query.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/range.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/regexp.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/script.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/term.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/terms.rb +18 -1
- data/lib/elasticsearch/dsl/search/filters/type.rb +18 -1
- data/lib/elasticsearch/dsl/search/highlight.rb +18 -1
- data/lib/elasticsearch/dsl/search/options.rb +20 -2
- data/lib/elasticsearch/dsl/search/queries/bool.rb +24 -7
- data/lib/elasticsearch/dsl/search/queries/boosting.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/common.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/constant_score.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/dis_max.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/exists.rb +17 -0
- data/lib/elasticsearch/dsl/search/queries/filtered.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/function_score.rb +19 -1
- data/lib/elasticsearch/dsl/search/queries/fuzzy.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/fuzzy_like_this.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/fuzzy_like_this_field.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/geo_shape.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/has_child.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/has_parent.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/ids.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/indices.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/inner_hits.rb +133 -0
- data/lib/elasticsearch/dsl/search/queries/match.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/match_all.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/match_phrase.rb +17 -0
- data/lib/elasticsearch/dsl/search/queries/match_phrase_prefix.rb +17 -0
- data/lib/elasticsearch/dsl/search/queries/more_like_this.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/multi_match.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/nested.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/prefix.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/query_string.rb +20 -4
- data/lib/elasticsearch/dsl/search/queries/range.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/regexp.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/simple_query_string.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/span_first.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/span_multi.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/span_near.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/span_not.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/span_or.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/span_term.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/template.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/term.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/terms.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/top_children.rb +18 -1
- data/lib/elasticsearch/dsl/search/queries/wildcard.rb +18 -1
- data/lib/elasticsearch/dsl/search/query.rb +21 -2
- data/lib/elasticsearch/dsl/search/sort.rb +18 -1
- data/lib/elasticsearch/dsl/search/suggest.rb +18 -1
- data/lib/elasticsearch/dsl/search.rb +46 -4
- data/lib/elasticsearch/dsl/utils.rb +17 -0
- data/lib/elasticsearch/dsl/version.rb +18 -1
- data/lib/elasticsearch/dsl.rb +19 -1
- data/lib/elasticsearch-dsl.rb +17 -0
- data/spec/elasticsearch/dsl/search/aggregations/avg_spec.rb +43 -0
- data/spec/elasticsearch/dsl/search/aggregations/cardinality_spec.rb +110 -0
- data/spec/elasticsearch/dsl/search/aggregations/children_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/aggregations/composite_spec.rb +99 -0
- data/spec/elasticsearch/dsl/search/aggregations/date_histogram_spec.rb +182 -0
- data/spec/elasticsearch/dsl/search/aggregations/date_range_spec.rb +89 -0
- data/spec/elasticsearch/dsl/search/aggregations/extended_stats_spec.rb +43 -0
- data/spec/elasticsearch/dsl/search/aggregations/filter_spec.rb +48 -0
- data/spec/elasticsearch/dsl/search/aggregations/filters_spec.rb +89 -0
- data/spec/elasticsearch/dsl/search/aggregations/geo_bounds_spec.rb +77 -0
- data/spec/elasticsearch/dsl/search/aggregations/geo_distance_spec.rb +113 -0
- data/spec/elasticsearch/dsl/search/aggregations/geo_grid_spec.rb +100 -0
- data/spec/elasticsearch/dsl/search/aggregations/global_spec.rb +62 -0
- data/spec/elasticsearch/dsl/search/aggregations/historgram_spec.rb +122 -0
- data/spec/elasticsearch/dsl/search/aggregations/ip_range_spec.rb +93 -0
- data/spec/elasticsearch/dsl/search/aggregations/max_spec.rb +43 -0
- data/spec/elasticsearch/dsl/search/aggregations/min_spec.rb +43 -0
- data/spec/elasticsearch/dsl/search/aggregations/missing_spec.rb +81 -0
- data/spec/elasticsearch/dsl/search/aggregations/nested_spec.rb +86 -0
- data/spec/elasticsearch/dsl/search/aggregations/percentile_ranks_spec.rb +126 -0
- data/spec/elasticsearch/dsl/search/aggregations/percentiles_spec.rb +125 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_script_spec.rb +99 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_sort_spec.rb +104 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum_spec.rb +77 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/derivative_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/max_bucket_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/min_bucket_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/moving_avg_test_spec.rb +132 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket_spec.rb +99 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/serial_diff_spec.rb +99 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/range_spec.rb +119 -0
- data/spec/elasticsearch/dsl/search/aggregations/reverse_nested_spec.rb +32 -0
- data/spec/elasticsearch/dsl/search/aggregations/scripted_metric_spec.rb +121 -0
- data/spec/elasticsearch/dsl/search/aggregations/significant_terms_spec.rb +176 -0
- data/spec/elasticsearch/dsl/search/aggregations/significant_text_spec.rb +176 -0
- data/spec/elasticsearch/dsl/search/aggregations/stats_spec.rb +56 -0
- data/spec/elasticsearch/dsl/search/aggregations/sum_spec.rb +43 -0
- data/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb +165 -0
- data/spec/elasticsearch/dsl/search/aggregations/top_hits_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/aggregations/value_count_spec.rb +43 -0
- data/spec/elasticsearch/dsl/search/collapse_spec.rb +93 -0
- data/spec/elasticsearch/dsl/search/filters/and_spec.rb +74 -0
- data/spec/elasticsearch/dsl/search/filters/bool_spec.rb +213 -0
- data/spec/elasticsearch/dsl/search/filters/exists_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/filters/geo_bounding_box_spec.rb +144 -0
- data/spec/elasticsearch/dsl/search/filters/geo_distance_range_spec.rb +103 -0
- data/spec/elasticsearch/dsl/search/filters/geo_distance_spec.rb +126 -0
- data/spec/elasticsearch/dsl/search/filters/geo_polygon_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/filters/geo_shape_spec.rb +77 -0
- data/spec/elasticsearch/dsl/search/filters/geohash_cell_spec.rb +99 -0
- data/spec/elasticsearch/dsl/search/filters/has_child_spec.rb +139 -0
- data/spec/elasticsearch/dsl/search/filters/has_parent_spec.rb +128 -0
- data/spec/elasticsearch/dsl/search/filters/ids_spec.rb +78 -0
- data/spec/elasticsearch/dsl/search/filters/indices_spec.rb +109 -0
- data/spec/elasticsearch/dsl/search/filters/limit_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/filters/match_all_spec.rb +32 -0
- data/spec/elasticsearch/dsl/search/filters/missing_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/filters/nested_spec.rb +91 -0
- data/spec/elasticsearch/dsl/search/filters/not_spec.rb +59 -0
- data/spec/elasticsearch/dsl/search/filters/or_spec.rb +75 -0
- data/spec/elasticsearch/dsl/search/filters/prefix_spec.rb +46 -0
- data/spec/elasticsearch/dsl/search/filters/query_spec.rb +59 -0
- data/spec/elasticsearch/dsl/search/filters/range_spec.rb +111 -0
- data/spec/elasticsearch/dsl/search/filters/regexp_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/filters/script_spec.rb +77 -0
- data/spec/elasticsearch/dsl/search/filters/term_spec.rb +57 -0
- data/spec/elasticsearch/dsl/search/filters/terms_spec.rb +46 -0
- data/spec/elasticsearch/dsl/search/filters/type_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/queries/bool_spec.rb +267 -0
- data/spec/elasticsearch/dsl/search/queries/boosting_spec.rb +90 -0
- data/spec/elasticsearch/dsl/search/queries/common_spec.rb +132 -0
- data/spec/elasticsearch/dsl/search/queries/constant_score_spec.rb +90 -0
- data/spec/elasticsearch/dsl/search/queries/dis_max_spec.rb +88 -0
- data/spec/elasticsearch/dsl/search/queries/exists_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/queries/filtered_spec.rb +93 -0
- data/spec/elasticsearch/dsl/search/queries/function_score_spec.rb +175 -0
- data/spec/elasticsearch/dsl/search/queries/fuzzy_like_this_field_spec.rb +132 -0
- data/spec/elasticsearch/dsl/search/queries/fuzzy_like_this_spec.rb +134 -0
- data/spec/elasticsearch/dsl/search/queries/fuzzy_spec.rb +110 -0
- data/spec/elasticsearch/dsl/search/queries/geo_shape_spec.rb +77 -0
- data/spec/elasticsearch/dsl/search/queries/has_child_spec.rb +126 -0
- data/spec/elasticsearch/dsl/search/queries/has_parent_spec.rb +100 -0
- data/spec/elasticsearch/dsl/search/queries/ids_spec.rb +78 -0
- data/spec/elasticsearch/dsl/search/queries/indices_spec.rb +89 -0
- data/spec/elasticsearch/dsl/search/queries/inner_hits_spec.rb +144 -0
- data/spec/elasticsearch/dsl/search/queries/match_all_spec.rb +66 -0
- data/spec/elasticsearch/dsl/search/queries/match_phrase_prefix_spec.rb +103 -0
- data/spec/elasticsearch/dsl/search/queries/match_phrase_spec.rb +114 -0
- data/spec/elasticsearch/dsl/search/queries/match_spec.rb +107 -0
- data/spec/elasticsearch/dsl/search/queries/more_like_this_spec.rb +87 -0
- data/spec/elasticsearch/dsl/search/queries/multi_match_spec.rb +74 -0
- data/spec/elasticsearch/dsl/search/queries/nested_spec.rb +98 -0
- data/spec/elasticsearch/dsl/search/queries/prefix_spec.rb +70 -0
- data/spec/elasticsearch/dsl/search/queries/query_string_spec.rb +85 -0
- data/spec/elasticsearch/dsl/search/queries/range_spec.rb +78 -0
- data/spec/elasticsearch/dsl/search/queries/regexp_spec.rb +82 -0
- data/spec/elasticsearch/dsl/search/queries/simple_query_string_spec.rb +74 -0
- data/spec/elasticsearch/dsl/search/queries/span_first_spec.rb +69 -0
- data/spec/elasticsearch/dsl/search/queries/span_multi_spec.rb +69 -0
- data/spec/elasticsearch/dsl/search/queries/span_near_spec.rb +72 -0
- data/spec/elasticsearch/dsl/search/queries/span_not_spec.rb +73 -0
- data/spec/elasticsearch/dsl/search/queries/span_or_spec.rb +69 -0
- data/spec/elasticsearch/dsl/search/queries/span_term_spec.rb +46 -0
- data/spec/elasticsearch/dsl/search/queries/template_spec.rb +84 -0
- data/spec/elasticsearch/dsl/search/queries/term_spec.rb +57 -0
- data/spec/elasticsearch/dsl/search/queries/terms_spec.rb +46 -0
- data/spec/elasticsearch/dsl/search/queries/top_children_spec.rb +93 -0
- data/spec/elasticsearch/dsl/search/queries/wildcard_spec.rb +81 -0
- data/spec/elasticsearch/dsl/search_spec.rb +385 -0
- data/spec/spec_helper.rb +24 -0
- data/test/integration/search_aggregation_children_test.rb +44 -37
- data/test/integration/search_aggregation_geo_test.rb +27 -16
- data/test/integration/search_aggregation_nested_test.rb +32 -20
- data/test/integration/search_aggregations_test.rb +28 -13
- data/test/integration/search_filters_test.rb +33 -22
- data/test/integration/search_options_test.rb +20 -3
- data/test/integration/search_query_test.rb +24 -11
- data/test/integration/search_size_from_test.rb +22 -5
- data/test/integration/search_sort_test.rb +20 -7
- data/test/integration/search_suggest_test.rb +30 -19
- data/test/integration/search_test.rb +21 -8
- data/test/test_helper.rb +30 -23
- data/test/unit/dsl_test.rb +17 -0
- data/test/unit/search_aggregation_test.rb +17 -0
- data/test/unit/search_base_aggregation_component_test.rb +17 -0
- data/test/unit/search_base_component_test.rb +17 -0
- data/test/unit/search_filter_test.rb +17 -0
- data/test/unit/search_highlight_test.rb +17 -0
- data/test/unit/search_options_test.rb +25 -0
- data/test/unit/search_query_test.rb +17 -0
- data/test/unit/search_size_from_test.rb +17 -0
- data/test/unit/search_sort_test.rb +17 -0
- data/test/unit/search_suggest_test.rb +17 -0
- data/test/unit/search_test.rb +24 -0
- data/test/unit/utils_test.rb +17 -0
- metadata +278 -270
- data/test/unit/aggregations/avg_test.rb +0 -24
- data/test/unit/aggregations/cardinality_test.rb +0 -40
- data/test/unit/aggregations/children_test.rb +0 -36
- data/test/unit/aggregations/date_histogram_test.rb +0 -49
- data/test/unit/aggregations/date_range_test.rb +0 -42
- data/test/unit/aggregations/extended_stats_test.rb +0 -24
- data/test/unit/aggregations/filter_test.rb +0 -31
- data/test/unit/aggregations/filters_test.rb +0 -52
- data/test/unit/aggregations/geo_bounds_test.rb +0 -37
- data/test/unit/aggregations/geo_distance_test.rb +0 -45
- data/test/unit/aggregations/geohash_grid_test.rb +0 -40
- data/test/unit/aggregations/global_test.rb +0 -38
- data/test/unit/aggregations/histogram_test.rb +0 -42
- data/test/unit/aggregations/ip_range_test.rb +0 -41
- data/test/unit/aggregations/max_test.rb +0 -24
- data/test/unit/aggregations/min_test.rb +0 -24
- data/test/unit/aggregations/missing_test.rb +0 -39
- data/test/unit/aggregations/nested_test.rb +0 -48
- data/test/unit/aggregations/percentile_ranks_test.rb +0 -41
- data/test/unit/aggregations/percentiles_test.rb +0 -40
- data/test/unit/aggregations/pipeline/avg_bucket_test.rb +0 -39
- data/test/unit/aggregations/pipeline/bucket_script_test.rb +0 -39
- data/test/unit/aggregations/pipeline/bucket_selector_test.rb +0 -38
- data/test/unit/aggregations/pipeline/cumulative_sum_test.rb +0 -37
- data/test/unit/aggregations/pipeline/derivative_test.rb +0 -39
- data/test/unit/aggregations/pipeline/extended_stats_bucket_test.rb +0 -38
- data/test/unit/aggregations/pipeline/max_bucket_test.rb +0 -38
- data/test/unit/aggregations/pipeline/min_bucket_test.rb +0 -38
- data/test/unit/aggregations/pipeline/moving_avg_test.rb +0 -41
- data/test/unit/aggregations/pipeline/percentiles_bucket_test.rb +0 -39
- data/test/unit/aggregations/pipeline/serial_diff_test.rb +0 -39
- data/test/unit/aggregations/pipeline/stats_bucket_test.rb +0 -38
- data/test/unit/aggregations/pipeline/sum_bucket_test.rb +0 -38
- data/test/unit/aggregations/range_test.rb +0 -59
- data/test/unit/aggregations/reverse_nested_test.rb +0 -20
- data/test/unit/aggregations/scripted_metric_test.rb +0 -41
- data/test/unit/aggregations/significant_terms_test.rb +0 -46
- data/test/unit/aggregations/stats_test.rb +0 -32
- data/test/unit/aggregations/sum_test.rb +0 -24
- data/test/unit/aggregations/terms_test.rb +0 -51
- data/test/unit/aggregations/top_hits_test.rb +0 -38
- data/test/unit/aggregations/value_count_test.rb +0 -24
- data/test/unit/filters/and_test.rb +0 -69
- data/test/unit/filters/bool_test.rb +0 -98
- data/test/unit/filters/exists_test.rb +0 -36
- data/test/unit/filters/geo_bounding_box_test.rb +0 -45
- data/test/unit/filters/geo_distance_range_test.rb +0 -51
- data/test/unit/filters/geo_distance_test.rb +0 -58
- data/test/unit/filters/geo_polygon_test.rb +0 -36
- data/test/unit/filters/geo_shape_test.rb +0 -37
- data/test/unit/filters/geohash_cell_test.rb +0 -43
- data/test/unit/filters/has_child_test.rb +0 -54
- data/test/unit/filters/has_parent_test.rb +0 -54
- data/test/unit/filters/ids_test.rb +0 -38
- data/test/unit/filters/indices_test.rb +0 -52
- data/test/unit/filters/limit_test.rb +0 -36
- data/test/unit/filters/match_all_test.rb +0 -20
- data/test/unit/filters/missing_test.rb +0 -38
- data/test/unit/filters/nested_test.rb +0 -40
- data/test/unit/filters/not_test.rb +0 -35
- data/test/unit/filters/or_test.rb +0 -53
- data/test/unit/filters/prefix_test.rb +0 -25
- data/test/unit/filters/query_test.rb +0 -33
- data/test/unit/filters/range_test.rb +0 -48
- data/test/unit/filters/regexp_test.rb +0 -42
- data/test/unit/filters/script_test.rb +0 -38
- data/test/unit/filters/term_test.rb +0 -27
- data/test/unit/filters/terms_test.rb +0 -24
- data/test/unit/filters/type_test.rb +0 -36
- data/test/unit/queries/bool_test.rb +0 -147
- data/test/unit/queries/boosting_test.rb +0 -41
- data/test/unit/queries/common_test.rb +0 -42
- data/test/unit/queries/constant_score_test.rb +0 -47
- data/test/unit/queries/dis_max_test.rb +0 -38
- data/test/unit/queries/exists_test.rb +0 -36
- data/test/unit/queries/filtered_test.rb +0 -51
- data/test/unit/queries/function_score_test.rb +0 -70
- data/test/unit/queries/fuzzy_like_this_field_test.rb +0 -42
- data/test/unit/queries/fuzzy_like_this_test.rb +0 -44
- data/test/unit/queries/fuzzy_test.rb +0 -40
- data/test/unit/queries/geo_shape_test.rb +0 -37
- data/test/unit/queries/has_child_test.rb +0 -55
- data/test/unit/queries/has_parent_test.rb +0 -41
- data/test/unit/queries/ids_test.rb +0 -38
- data/test/unit/queries/indices_test.rb +0 -39
- data/test/unit/queries/match_all_test.rb +0 -36
- data/test/unit/queries/match_phrase_prefix_test.rb +0 -62
- data/test/unit/queries/match_phrase_test.rb +0 -63
- data/test/unit/queries/match_test.rb +0 -65
- data/test/unit/queries/more_like_this_test.rb +0 -53
- data/test/unit/queries/multi_match_test.rb +0 -42
- data/test/unit/queries/nested_test.rb +0 -52
- data/test/unit/queries/prefix_test.rb +0 -37
- data/test/unit/queries/query_string_test.rb +0 -56
- data/test/unit/queries/range_test.rb +0 -41
- data/test/unit/queries/regexp_test.rb +0 -43
- data/test/unit/queries/simple_query_string_test.rb +0 -41
- data/test/unit/queries/span_first_test.rb +0 -36
- data/test/unit/queries/span_multi_test.rb +0 -36
- data/test/unit/queries/span_near_test.rb +0 -39
- data/test/unit/queries/span_not_test.rb +0 -40
- data/test/unit/queries/span_or_test.rb +0 -36
- data/test/unit/queries/span_term_test.rb +0 -24
- data/test/unit/queries/template_test.rb +0 -43
- data/test/unit/queries/term_test.rb +0 -27
- data/test/unit/queries/terms_test.rb +0 -24
- data/test/unit/queries/top_children_test.rb +0 -53
- 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
|
data/spec/spec_helper.rb
ADDED
@@ -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-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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-
|
39
|
-
body: {
|
40
|
-
@client.index index: 'articles-
|
41
|
-
body: {
|
42
|
-
@client.index index: 'articles-
|
43
|
-
body: {
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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-
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
28
|
+
mappings: {
|
29
|
+
properties: {
|
30
|
+
location: {type: 'geo_point'}
|
31
|
+
}
|
20
32
|
}
|
21
|
-
}
|
22
33
|
}
|
23
|
-
@client.index index: 'venues-test',
|
34
|
+
@client.index index: 'venues-test',
|
24
35
|
body: { name: 'Space', location: "38.886214,1.403889" }
|
25
|
-
@client.index index: 'venues-test',
|
36
|
+
@client.index index: 'venues-test',
|
26
37
|
body: { name: 'Pacha', location: "38.9184427,1.4433646" }
|
27
|
-
@client.index index: 'venues-test',
|
38
|
+
@client.index index: 'venues-test',
|
28
39
|
body: { name: 'Amnesia', location: "38.948045,1.408341" }
|
29
|
-
@client.index index: 'venues-test',
|
40
|
+
@client.index index: 'venues-test',
|
30
41
|
body: { name: 'Privilege', location: "38.958082,1.408288" }
|
31
|
-
@client.index index: 'venues-test',
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
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',
|
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',
|
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 } ] }
|