arelastic 1.3.1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/lib/arelastic.rb +0 -1
  3. data/lib/arelastic/arities/unary.rb +1 -1
  4. data/lib/arelastic/builders/filter.rb +10 -10
  5. data/lib/arelastic/builders/query.rb +2 -2
  6. data/lib/arelastic/nodes.rb +0 -1
  7. data/lib/arelastic/queries.rb +12 -2
  8. data/lib/arelastic/queries/bool.rb +16 -7
  9. data/lib/arelastic/{filters/missing.rb → queries/exists.rb} +5 -6
  10. data/lib/arelastic/queries/filter.rb +9 -0
  11. data/lib/arelastic/{filters → queries}/geo_bounding_box.rb +2 -2
  12. data/lib/arelastic/{filters → queries}/geo_distance.rb +2 -2
  13. data/lib/arelastic/{filters → queries}/has_child.rb +2 -2
  14. data/lib/arelastic/{filters → queries}/ids.rb +2 -2
  15. data/lib/arelastic/{filters → queries}/limit.rb +2 -2
  16. data/lib/arelastic/queries/match_none.rb +9 -0
  17. data/lib/arelastic/queries/nested.rb +15 -1
  18. data/lib/arelastic/queries/query.rb +1 -1
  19. data/lib/arelastic/queries/range.rb +7 -0
  20. data/lib/arelastic/{filters → queries}/regexp.rb +2 -2
  21. data/lib/arelastic/{filters → queries}/script.rb +2 -2
  22. data/lib/arelastic/searches.rb +0 -1
  23. data/test/arelastic/aggregations/filter_test.rb +2 -2
  24. data/test/arelastic/builders/filter_test.rb +4 -4
  25. data/test/arelastic/builders/query_test.rb +4 -4
  26. data/test/arelastic/builders/search_test.rb +2 -2
  27. data/test/arelastic/queries/bool_test.rb +20 -3
  28. data/test/arelastic/queries/exists_test.rb +15 -0
  29. data/test/arelastic/queries/filter_test.rb +22 -0
  30. data/test/arelastic/{filters → queries}/geo_bounding_box_test.rb +3 -3
  31. data/test/arelastic/{filters → queries}/geo_distance_test.rb +2 -2
  32. data/test/arelastic/{filters → queries}/has_child_test.rb +2 -2
  33. data/test/arelastic/{filters → queries}/ids_test.rb +2 -2
  34. data/test/arelastic/queries/match_none_test.rb +10 -0
  35. data/test/arelastic/{filters → queries}/match_test.rb +0 -0
  36. data/test/arelastic/queries/query_test.rb +2 -2
  37. data/test/arelastic/{filters → queries}/regexp_test.rb +3 -3
  38. data/test/arelastic/{filters → queries}/script_test.rb +3 -3
  39. metadata +23 -41
  40. data/lib/arelastic/filters.rb +0 -21
  41. data/lib/arelastic/filters/and.rb +0 -7
  42. data/lib/arelastic/filters/exists.rb +0 -15
  43. data/lib/arelastic/filters/filter.rb +0 -17
  44. data/lib/arelastic/filters/match_all.rb +0 -9
  45. data/lib/arelastic/filters/nested.rb +0 -7
  46. data/lib/arelastic/filters/not.rb +0 -15
  47. data/lib/arelastic/filters/or.rb +0 -7
  48. data/lib/arelastic/filters/prefix.rb +0 -7
  49. data/lib/arelastic/filters/query.rb +0 -14
  50. data/lib/arelastic/filters/range.rb +0 -7
  51. data/lib/arelastic/filters/term.rb +0 -7
  52. data/lib/arelastic/filters/terms.rb +0 -7
  53. data/lib/arelastic/nodes/nested.rb +0 -29
  54. data/lib/arelastic/queries/filtered.rb +0 -19
  55. data/lib/arelastic/searches/filter.rb +0 -7
  56. data/test/arelastic/filters/exists_test.rb +0 -9
  57. data/test/arelastic/filters/filter_test.rb +0 -36
  58. data/test/arelastic/filters/match_all_test.rb +0 -10
  59. data/test/arelastic/filters/missing_test.rb +0 -15
  60. data/test/arelastic/filters/nested_test.rb +0 -19
  61. data/test/arelastic/filters/not_test.rb +0 -9
  62. data/test/arelastic/filters/query_test.rb +0 -15
  63. data/test/arelastic/queries/filtered_test.rb +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d96135e275fd9ab247666893b15e684ee782dead
4
- data.tar.gz: cdc3cd878e4c5f71a0f90d9c3337e9b4611e3df3
3
+ metadata.gz: 2235317037c0d00226ff1d0d0199c26094dc9458
4
+ data.tar.gz: 3bf89dcf40341c09cf22304858105610a76f0066
5
5
  SHA512:
6
- metadata.gz: 82a9a205c20da2f7aa6908faa80073c1ed170173580436eac6b92b3e2903bdb88b1fa016cc5d89e3e1f256e979a48cf8e372d41f904cf3f40e698fb117a52c1b
7
- data.tar.gz: 93736e6182ddfdfefabf2680e94c2d4e65d9fff3de38d02ce94827758d444d9c8ec56b2d8dd52c40aba5fe1c7af8697eb82f95e55d421ab3eb81946e094b6296
6
+ metadata.gz: 3e498c09d739f8c92a392512cd3d1ea7b9dac13a84a4dd29c1921d608926a2a2fc28113b5fde9051deb843b4aec0b45d93c41e12d770f3e998cdaed24217486c
7
+ data.tar.gz: afe811fa073caec58e99251271fddfeb1e72532a101a49e2b97a9a3551bdb8d1d03223e7019b24e863f5944676ffa5082f0cf2f1638fab6a15768cad87dbacde
data/lib/arelastic.rb CHANGED
@@ -2,7 +2,6 @@ require 'arelastic/arities'
2
2
  require 'arelastic/nodes'
3
3
  require 'arelastic/aggregations'
4
4
  require 'arelastic/queries'
5
- require 'arelastic/filters'
6
5
  require 'arelastic/mappings'
7
6
  require 'arelastic/searches'
8
7
  require 'arelastic/sorts'
@@ -14,7 +14,7 @@ module Arelastic
14
14
 
15
15
  module Methods
16
16
  def initialize expr
17
- # raise "#{expr.inspect} must be an Arelastic::Filters::Filter" unless expr.is_a?(Arelastic::Filters::Filter)
17
+ # raise "#{expr.inspect} must be an Arelastic::Queries::Filter" unless expr.is_a?(Arelastic::Queries::Filter)
18
18
  @expr = expr
19
19
  end
20
20
 
@@ -7,16 +7,16 @@ module Arelastic
7
7
  end
8
8
 
9
9
  def ids *ids
10
- Arelastic::Filters::Ids.new ids.flatten
10
+ Arelastic::Queries::Ids.new ids.flatten
11
11
  end
12
12
 
13
13
  def not expr
14
- Arelastic::Filters::Not.new expr
14
+ Arelastic::Queries::Bool.new must_not: expr
15
15
  end
16
16
  end
17
17
 
18
18
  def eq other
19
- Arelastic::Filters::Term.new field, other
19
+ Arelastic::Queries::Term.new field, other
20
20
  end
21
21
 
22
22
  def not_eq other
@@ -32,7 +32,7 @@ module Arelastic
32
32
  range 'gte' => other.begin, 'lte' => other.end
33
33
  end
34
34
  else
35
- Arelastic::Filters::Terms.new field, other, options
35
+ Arelastic::Queries::Terms.new field, other, options
36
36
  end
37
37
  end
38
38
 
@@ -41,19 +41,19 @@ module Arelastic
41
41
  end
42
42
 
43
43
  def prefix other
44
- Arelastic::Filters::Prefix.new field, other
44
+ Arelastic::Queries::Prefix.new field, other
45
45
  end
46
46
 
47
- def exists
48
- Arelastic::Filters::Exists.new field
47
+ def exists(options = {})
48
+ Arelastic::Queries::Exists.new field, options
49
49
  end
50
50
 
51
51
  def missing(options = {})
52
- Arelastic::Filters::Missing.new field, options
52
+ exists(options).negate
53
53
  end
54
54
 
55
55
  def regexp other
56
- Arelastic::Filters::Regexp.new field, other
56
+ Arelastic::Queries::Regexp.new field, other
57
57
  end
58
58
 
59
59
  def gteq other
@@ -74,7 +74,7 @@ module Arelastic
74
74
 
75
75
  private
76
76
  def range options
77
- Arelastic::Filters::Range.new field, options
77
+ Arelastic::Queries::Range.new field, options
78
78
  end
79
79
  end
80
80
  end
@@ -10,8 +10,8 @@ module Arelastic
10
10
  query Arelastic::Queries::ConstantScore.new(search)
11
11
  end
12
12
 
13
- def filtered(query: nil, filter: nil)
14
- query Arelastic::Queries::Filtered.new(query: query, filter: filter)
13
+ def bool(must: nil, filter: nil, should: nil, must_not: nil)
14
+ query Arelastic::Queries::Bool.new(must: must, filter: filter, should: should, must_not: must_not)
15
15
  end
16
16
 
17
17
  def match_all
@@ -1,4 +1,3 @@
1
1
  require 'arelastic/nodes/node'
2
2
 
3
- require 'arelastic/nodes/nested'
4
3
  require 'arelastic/nodes/hash_group'
@@ -2,15 +2,25 @@ require 'arelastic/queries/query'
2
2
 
3
3
  require 'arelastic/queries/bool'
4
4
  require 'arelastic/queries/constant_score'
5
+ require 'arelastic/queries/exists'
5
6
  require 'arelastic/queries/field'
6
- require 'arelastic/queries/filtered'
7
+ require 'arelastic/queries/geo_bounding_box'
8
+ require 'arelastic/queries/geo_distance'
9
+ require 'arelastic/queries/has_child'
10
+ require 'arelastic/queries/ids'
11
+ require 'arelastic/queries/limit'
7
12
  require 'arelastic/queries/match'
8
13
  require 'arelastic/queries/match_all'
14
+ require 'arelastic/queries/match_none'
9
15
  require 'arelastic/queries/multi_match'
10
16
  require 'arelastic/queries/nested'
11
17
  require 'arelastic/queries/prefix'
18
+ require 'arelastic/queries/query'
12
19
  require 'arelastic/queries/query_string'
20
+ require 'arelastic/queries/range'
21
+ require 'arelastic/queries/regexp'
22
+ require 'arelastic/queries/script'
13
23
  require 'arelastic/queries/simple_query_string'
14
- require 'arelastic/queries/terms'
15
24
  require 'arelastic/queries/term'
25
+ require 'arelastic/queries/terms'
16
26
  require 'arelastic/queries/wildcard'
@@ -1,18 +1,27 @@
1
1
  module Arelastic
2
2
  module Queries
3
3
  class Bool < Arelastic::Queries::Query
4
- attr_accessor :options
5
- def initialize(options)
6
- @options = options
4
+ attr_accessor :must, :filter, :should, :must_not
5
+ def initialize(must: nil, filter: nil, should: nil, must_not: nil)
6
+ @must = must
7
+ @filter = filter
8
+ @should = should
9
+ @must_not = must_not
7
10
  end
8
11
 
9
12
  def as_elastic
10
- params = {}
11
- options.each do |key, value|
12
- params[key] = convert_to_elastic(value)
13
+ searches = {}
14
+
15
+ {
16
+ 'must' => must,
17
+ 'filter' => filter,
18
+ 'should' => should,
19
+ 'must_not' => must_not
20
+ }.each do |k, v|
21
+ searches[k] = convert_to_elastic(v) if v
13
22
  end
14
23
 
15
- { "bool" => params }
24
+ {'bool' => searches}
16
25
  end
17
26
  end
18
27
  end
@@ -1,11 +1,10 @@
1
1
  module Arelastic
2
- module Filters
3
- class Missing < Arelastic::Filters::Filter
2
+ module Queries
3
+ class Exists < Arelastic::Queries::Query
4
4
  attr_reader :field, :options
5
5
 
6
6
  # Options:
7
- # "existence" => true defaults to true
8
- # "null_value" => true defaults to false
7
+ # "null_value" => "_null_"
9
8
  def initialize field, options = {}
10
9
  @field = field
11
10
  @options = options
@@ -13,8 +12,8 @@ module Arelastic
13
12
 
14
13
  def as_elastic
15
14
  params = {"field" => field}.update(options)
16
- {"missing" => params}
15
+ {"exists" => params}
17
16
  end
18
17
  end
19
18
  end
20
- end
19
+ end
@@ -0,0 +1,9 @@
1
+ module Arelastic
2
+ module Queries
3
+ class Filter < Arelastic::Queries::Query
4
+ def nested path
5
+ Arelastic::Queries::Nested.new path, self
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,6 +1,6 @@
1
1
  module Arelastic
2
- module Filters
3
- class GeoBoundingBox < Arelastic::Filters::Filter
2
+ module Queries
3
+ class GeoBoundingBox < Arelastic::Queries::Query
4
4
  attr_accessor :field, :bounds, :options
5
5
  def initialize(field, bounds, options = {})
6
6
  @field = field
@@ -1,6 +1,6 @@
1
1
  module Arelastic
2
- module Filters
3
- class GeoDistance < Arelastic::Filters::Filter
2
+ module Queries
3
+ class GeoDistance < Arelastic::Queries::Query
4
4
  attr_accessor :field, :location, :distance, :options
5
5
  def initialize(field, location, distance, options = {})
6
6
  @field = field
@@ -1,6 +1,6 @@
1
1
  module Arelastic
2
- module Filters
3
- class HasChild < Arelastic::Filters::Filter
2
+ module Queries
3
+ class HasChild < Arelastic::Queries::Query
4
4
  attr_reader :type, :query
5
5
 
6
6
  def initialize type, query
@@ -1,6 +1,6 @@
1
1
  module Arelastic
2
- module Filters
3
- class Ids < Arelastic::Filters::Filter
2
+ module Queries
3
+ class Ids < Arelastic::Queries::Query
4
4
  attr_reader :values
5
5
 
6
6
  def initialize values
@@ -1,6 +1,6 @@
1
1
  module Arelastic
2
- module Filters
3
- class Limit < Arelastic::Filters::Filter
2
+ module Queries
3
+ class Limit < Arelastic::Queries::Query
4
4
  attr_reader :value
5
5
 
6
6
  def initialize value
@@ -0,0 +1,9 @@
1
+ module Arelastic
2
+ module Queries
3
+ class MatchNone < Arelastic::Queries::Query
4
+ def as_elastic
5
+ {"match_none" => {}}
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,7 +1,21 @@
1
1
  module Arelastic
2
2
  module Queries
3
3
  class Nested < Arelastic::Queries::Query
4
- include Arelastic::Nodes::Nested
4
+ attr_accessor :path, :expr
5
+
6
+ def initialize(path, expr)
7
+ @path = path
8
+ @expr = expr
9
+ end
10
+
11
+ def as_elastic
12
+ params = {
13
+ 'path' => path,
14
+ 'query' => convert_to_elastic(expr)
15
+ }
16
+
17
+ { 'nested' => params }
18
+ end
5
19
  end
6
20
  end
7
21
  end
@@ -10,4 +10,4 @@ module Arelastic
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Arelastic
2
+ module Queries
3
+ class Range < Arelastic::Queries::Query
4
+ binary 'range'
5
+ end
6
+ end
7
+ end
@@ -1,5 +1,5 @@
1
1
  module Arelastic
2
- module Filters
2
+ module Queries
3
3
  #
4
4
  # Implements support for the Regexp filter.
5
5
  #
@@ -9,7 +9,7 @@ module Arelastic
9
9
  #
10
10
  # Reference: https://www.elastic.co/guide/en/elasticsearch/reference/1.7/query-dsl-regexp-filter.html
11
11
  #
12
- class Regexp < Filter
12
+ class Regexp < Query
13
13
  binary 'regexp'
14
14
 
15
15
  def initialize(field, value, options = {})
@@ -1,6 +1,6 @@
1
1
  module Arelastic
2
- module Filters
3
- class Script < Arelastic::Filters::Filter
2
+ module Queries
3
+ class Script < Arelastic::Queries::Query
4
4
  attr_reader :script, :options
5
5
 
6
6
  def initialize script, options = {}
@@ -1,7 +1,6 @@
1
1
  require 'arelastic/searches/search'
2
2
 
3
3
  require 'arelastic/searches/aggregations'
4
- require 'arelastic/searches/filter'
5
4
  require 'arelastic/searches/from'
6
5
  require 'arelastic/searches/query'
7
6
  require 'arelastic/searches/size'
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Aggregations::TermsTest < Minitest::Test
3
+ class Arelastic::Aggregations::FilterTest < Minitest::Test
4
4
  def test_as_elastic
5
5
  aggregation = Arelastic::Aggregations::Filter.new('foo', 'exists' => {'field' => 'color'})
6
6
  expected = {
@@ -17,7 +17,7 @@ class Arelastic::Aggregations::TermsTest < Minitest::Test
17
17
  end
18
18
 
19
19
  def test_as_elastic_with_node
20
- aggregation = Arelastic::Aggregations::Filter.new('foo', Arelastic::Filters::Exists.new('color'))
20
+ aggregation = Arelastic::Aggregations::Filter.new('foo', Arelastic::Queries::Exists.new('color'))
21
21
  expected = {
22
22
  "foo" => {
23
23
  "filter" => {
@@ -7,7 +7,7 @@ class Arelastic::Builders::FilterTest < Minitest::Test
7
7
  end
8
8
 
9
9
  def test_not
10
- expected = {"not" => {"terms" => {"color" => "blue"}}}
10
+ expected = {"bool" => {"must_not" => {"terms" => {"color" => "blue"}}}}
11
11
  assert_equal expected, Arelastic::Builders::Filter.not({"terms" => {"color" => "blue"}}).as_elastic
12
12
  end
13
13
 
@@ -17,7 +17,7 @@ class Arelastic::Builders::FilterTest < Minitest::Test
17
17
  end
18
18
 
19
19
  def test_not_eq
20
- expected = {"not" => {"term" => {"color"=>"blue"}}}
20
+ expected = {"bool" => {"must_not" => {"term" => {"color" => "blue"}}}}
21
21
  assert_equal expected, builder.not_eq('blue').as_elastic
22
22
  end
23
23
 
@@ -40,7 +40,7 @@ class Arelastic::Builders::FilterTest < Minitest::Test
40
40
  end
41
41
 
42
42
  def test_not_in
43
- expected = {"not" => {"terms" => {"color"=>["blue"]}}}
43
+ expected = {"bool" => {"must_not" => {"terms" => {"color"=>["blue"]}}}}
44
44
  assert_equal expected, builder.not_in(['blue']).as_elastic
45
45
  end
46
46
 
@@ -55,7 +55,7 @@ class Arelastic::Builders::FilterTest < Minitest::Test
55
55
  end
56
56
 
57
57
  def test_missing
58
- expected = {"missing" => {"field" => "color"}}
58
+ expected = {"bool" => {"must_not" => {"exists" => {"field" => "color"}}}}
59
59
  assert_equal expected, builder.missing.as_elastic
60
60
  end
61
61
 
@@ -8,12 +8,12 @@ class Arelastic::Builders::QueryTest < Minitest::Test
8
8
  assert_equal expected, query.as_elastic
9
9
  end
10
10
 
11
- def test_filtered
12
- query = Arelastic::Builders::Query.filtered(
13
- query: {"query_string" => "foo"},
11
+ def test_bool
12
+ query = Arelastic::Builders::Query.bool(
13
+ must: {"query_string" => "foo"},
14
14
  filter: {"term" => "bar"}
15
15
  )
16
- expected = {"query" => {"filtered" => {"query" => {"query_string" => "foo"}, "filter" => {"term" => "bar"}}}}
16
+ expected = {"query" => {"bool" => {"must" => {"query_string" => "foo"}, "filter" => {"term" => "bar"}}}}
17
17
 
18
18
  assert_equal expected, query.as_elastic
19
19
  end
@@ -13,11 +13,11 @@ class Arelastic::Builders::SearchTest < Minitest::Test
13
13
  assert_equal Arelastic::Builders::Aggregation, Arelastic::Builders::Search.aggregation
14
14
  end
15
15
 
16
- def test_filter
16
+ def test_query
17
17
  assert_equal Arelastic::Builders::Query, Arelastic::Builders::Search.query
18
18
  end
19
19
 
20
- def test_filter
20
+ def test_sort
21
21
  assert_equal Arelastic::Builders::Sort, Arelastic::Builders::Search.sort
22
22
  end
23
23
  end
@@ -1,15 +1,32 @@
1
1
  require 'helper'
2
2
 
3
3
  class Arelastic::Queries::BoolTest < Minitest::Test
4
+ # def test_as_elastic
5
+ # filtered = Arelastic::Queries::Filtered.new(
6
+ # query: {"query_string" => "bar"},
7
+ # filter: {"term" => "baz"}
8
+ # )
9
+ # expected = {"filtered" => {"query" => {"query_string" => "bar"}, "filter" => {"term" => "baz"}}}
10
+ #
11
+ # assert_equal expected, filtered.as_elastic
12
+ # end
13
+ #
14
+ # def test_as_elastic_with_query_node
15
+ # filtered = Arelastic::Queries::Filtered.new(query: Arelastic::Queries::QueryString.new("bar"))
16
+ # expected = {"filtered" => {"query" => {"query_string" => {"query"=>"bar"}}}}
17
+ #
18
+ # assert_equal expected, filtered.as_elastic
19
+ # end
20
+
4
21
  def test_as_elastic
5
22
  bool = Arelastic::Queries::Bool.new(
6
- 'must' => {
23
+ must: {
7
24
  'prefix' => {
8
25
  'user' => 'kimchy'
9
26
  }
10
27
  },
11
- 'must_not' => Arelastic::Queries::Match.new('color', 'green'),
12
- 'should' => [
28
+ must_not: Arelastic::Queries::Match.new('color', 'green'),
29
+ should: [
13
30
  Arelastic::Queries::Match.new('height', 6)
14
31
  ]
15
32
  )
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class Arelastic::Queries::ExistsTest < Minitest::Test
4
+ def test_as_elastic
5
+ expected = {"exists" => { "field" => "color" }}
6
+
7
+ assert_equal expected, Arelastic::Queries::Exists.new('color').as_elastic
8
+ end
9
+
10
+ def test_with_options
11
+ expected = {"exists" => { "field" => "color", "null_value" => "_null" }}
12
+
13
+ assert_equal expected, Arelastic::Queries::Exists.new('color', 'null_value' => "_null").as_elastic
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ require 'helper'
2
+
3
+ class Arelastic::Queries::FilterTest < Minitest::Test
4
+ def test_nested
5
+ filter = Arelastic::Queries::Term.new('foo', 'bar')
6
+
7
+ nested_filter = filter.nested 'links'
8
+
9
+ assert nested_filter.is_a?(Arelastic::Queries::Nested)
10
+ expected = {
11
+ "nested" => {
12
+ "path" => "links",
13
+ "query" => {
14
+ "term" => {
15
+ "foo" => "bar"
16
+ }
17
+ }
18
+ }
19
+ }
20
+ assert_equal(expected, nested_filter.as_elastic)
21
+ end
22
+ end
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Filters::GeoBoundingBoxTest < Minitest::Test
3
+ class Arelastic::Queries::GeoBoundingBoxTest < Minitest::Test
4
4
  def test_as_elastic
5
5
  expected = {
6
6
  "geo_bounding_box" => {
@@ -13,7 +13,7 @@ class Arelastic::Filters::GeoBoundingBoxTest < Minitest::Test
13
13
 
14
14
  assert_equal(
15
15
  expected,
16
- Arelastic::Filters::GeoBoundingBox.new('location', 'top_left' => [40, -70], 'bottom_right' => [30, -60]).as_elastic
16
+ Arelastic::Queries::GeoBoundingBox.new('location', 'top_left' => [40, -70], 'bottom_right' => [30, -60]).as_elastic
17
17
  )
18
18
  end
19
19
 
@@ -30,7 +30,7 @@ class Arelastic::Filters::GeoBoundingBoxTest < Minitest::Test
30
30
 
31
31
  assert_equal(
32
32
  expected,
33
- Arelastic::Filters::GeoBoundingBox.new('location', {'top_left' => [40, -70], 'bottom_right' => [30, -60]}, 'index' => true).as_elastic
33
+ Arelastic::Queries::GeoBoundingBox.new('location', {'top_left' => [40, -70], 'bottom_right' => [30, -60]}, 'index' => true).as_elastic
34
34
  )
35
35
  end
36
36
  end
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Filters::GeoDistanceTest < Minitest::Test
3
+ class Arelastic::Queries::GeoDistanceTest < Minitest::Test
4
4
  def test_as_elastic
5
5
  expected = {
6
6
  "geo_distance" => {
@@ -9,6 +9,6 @@ class Arelastic::Filters::GeoDistanceTest < Minitest::Test
9
9
  }
10
10
  }
11
11
 
12
- assert_equal expected, Arelastic::Filters::GeoDistance.new('pin.location', [40, -70], '12km').as_elastic
12
+ assert_equal expected, Arelastic::Queries::GeoDistance.new('pin.location', [40, -70], '12km').as_elastic
13
13
  end
14
14
  end
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Filters::HasChildTest < Minitest::Test
3
+ class Arelastic::Queries::HasChildTest < Minitest::Test
4
4
  def test_as_elastic
5
5
  expected = {"has_child" => {"type" => "comment", "query" => {"query_string" => "lol"}}}
6
6
 
7
- assert_equal expected, Arelastic::Filters::HasChild.new("comment", {"query_string" => "lol"}).as_elastic
7
+ assert_equal expected, Arelastic::Queries::HasChild.new("comment", {"query_string" => "lol"}).as_elastic
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Filters::IdsTest < Minitest::Test
3
+ class Arelastic::Queries::IdsTest < Minitest::Test
4
4
  def test_as_elastic
5
5
  expected = {"ids" => {"values" => ["foo", "bar"]}}
6
6
 
7
- assert_equal expected, Arelastic::Filters::Ids.new(['foo', 'bar']).as_elastic
7
+ assert_equal expected, Arelastic::Queries::Ids.new(['foo', 'bar']).as_elastic
8
8
  end
9
9
  end
@@ -0,0 +1,10 @@
1
+ require 'helper'
2
+
3
+ class Arelastic::Queries::MatchAllTest < Minitest::Test
4
+ def test_as_elastic
5
+ match_all = Arelastic::Queries::MatchNone.new
6
+
7
+ expected = {"match_none" => {}}
8
+ assert_equal expected, match_all.as_elastic
9
+ end
10
+ end
File without changes
@@ -22,6 +22,6 @@ class Arelastic::Queries::QueryTest < Minitest::Test
22
22
  negated_filter = filter.negate
23
23
 
24
24
  assert negated_filter.is_a?(Arelastic::Queries::Bool)
25
- assert_equal filter, negated_filter.options[:must_not]
25
+ assert_equal filter, negated_filter.must_not
26
26
  end
27
- end
27
+ end
@@ -1,15 +1,15 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Filters::ExistsTest < Minitest::Test
3
+ class Arelastic::Queries::ExistsTest < Minitest::Test
4
4
  def test_setting_value_as_regexp_object
5
5
  assert_raises TypeError do
6
- Arelastic::Filters::Regexp.new('color', /yellow(-green)?/)
6
+ Arelastic::Queries::Regexp.new('color', /yellow(-green)?/)
7
7
  end
8
8
  end
9
9
 
10
10
  def test_string_value
11
11
  expected = { 'regexp' => { 'color' => 'blue(-green)?' } }
12
12
 
13
- assert_equal expected, Arelastic::Filters::Regexp.new('color', 'blue(-green)?').as_elastic
13
+ assert_equal expected, Arelastic::Queries::Regexp.new('color', 'blue(-green)?').as_elastic
14
14
  end
15
15
  end
@@ -1,15 +1,15 @@
1
1
  require 'helper'
2
2
 
3
- class Arelastic::Filters::ScriptTest < Minitest::Test
3
+ class Arelastic::Queries::ScriptTest < Minitest::Test
4
4
  def test_as_elastic
5
5
  expected = {"script" => {"script" => "doc['color'].value.charAt(0) == 'r'"}}
6
6
 
7
- assert_equal expected, Arelastic::Filters::Script.new("doc['color'].value.charAt(0) == 'r'").as_elastic
7
+ assert_equal expected, Arelastic::Queries::Script.new("doc['color'].value.charAt(0) == 'r'").as_elastic
8
8
  end
9
9
 
10
10
  def test_with_options
11
11
  expected = {"script" => {"script" => "doc['color'].value.length() == length", "params" => {"length" => 3}}}
12
12
 
13
- assert_equal expected, Arelastic::Filters::Script.new("doc['color'].value.length() == length", 'params' => {"length" => 3}).as_elastic
13
+ assert_equal expected, Arelastic::Queries::Script.new("doc['color'].value.length() == length", 'params' => {"length" => 3}).as_elastic
14
14
  end
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arelastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Higgins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-09 00:00:00.000000000 Z
11
+ date: 2017-07-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Build Elastic Search queries with objects
14
14
  email: developer@matthewhiggins.com
@@ -40,27 +40,6 @@ files:
40
40
  - lib/arelastic/builders/query.rb
41
41
  - lib/arelastic/builders/search.rb
42
42
  - lib/arelastic/builders/sort.rb
43
- - lib/arelastic/filters.rb
44
- - lib/arelastic/filters/and.rb
45
- - lib/arelastic/filters/exists.rb
46
- - lib/arelastic/filters/filter.rb
47
- - lib/arelastic/filters/geo_bounding_box.rb
48
- - lib/arelastic/filters/geo_distance.rb
49
- - lib/arelastic/filters/has_child.rb
50
- - lib/arelastic/filters/ids.rb
51
- - lib/arelastic/filters/limit.rb
52
- - lib/arelastic/filters/match_all.rb
53
- - lib/arelastic/filters/missing.rb
54
- - lib/arelastic/filters/nested.rb
55
- - lib/arelastic/filters/not.rb
56
- - lib/arelastic/filters/or.rb
57
- - lib/arelastic/filters/prefix.rb
58
- - lib/arelastic/filters/query.rb
59
- - lib/arelastic/filters/range.rb
60
- - lib/arelastic/filters/regexp.rb
61
- - lib/arelastic/filters/script.rb
62
- - lib/arelastic/filters/term.rb
63
- - lib/arelastic/filters/terms.rb
64
43
  - lib/arelastic/mappings.rb
65
44
  - lib/arelastic/mappings/type.rb
66
45
  - lib/arelastic/mappings/types/binary.rb
@@ -72,27 +51,35 @@ files:
72
51
  - lib/arelastic/mappings/types/string.rb
73
52
  - lib/arelastic/nodes.rb
74
53
  - lib/arelastic/nodes/hash_group.rb
75
- - lib/arelastic/nodes/nested.rb
76
54
  - lib/arelastic/nodes/node.rb
77
55
  - lib/arelastic/queries.rb
78
56
  - lib/arelastic/queries/bool.rb
79
57
  - lib/arelastic/queries/constant_score.rb
58
+ - lib/arelastic/queries/exists.rb
80
59
  - lib/arelastic/queries/field.rb
81
- - lib/arelastic/queries/filtered.rb
60
+ - lib/arelastic/queries/filter.rb
61
+ - lib/arelastic/queries/geo_bounding_box.rb
62
+ - lib/arelastic/queries/geo_distance.rb
63
+ - lib/arelastic/queries/has_child.rb
64
+ - lib/arelastic/queries/ids.rb
65
+ - lib/arelastic/queries/limit.rb
82
66
  - lib/arelastic/queries/match.rb
83
67
  - lib/arelastic/queries/match_all.rb
68
+ - lib/arelastic/queries/match_none.rb
84
69
  - lib/arelastic/queries/multi_match.rb
85
70
  - lib/arelastic/queries/nested.rb
86
71
  - lib/arelastic/queries/prefix.rb
87
72
  - lib/arelastic/queries/query.rb
88
73
  - lib/arelastic/queries/query_string.rb
74
+ - lib/arelastic/queries/range.rb
75
+ - lib/arelastic/queries/regexp.rb
76
+ - lib/arelastic/queries/script.rb
89
77
  - lib/arelastic/queries/simple_query_string.rb
90
78
  - lib/arelastic/queries/term.rb
91
79
  - lib/arelastic/queries/terms.rb
92
80
  - lib/arelastic/queries/wildcard.rb
93
81
  - lib/arelastic/searches.rb
94
82
  - lib/arelastic/searches/aggregations.rb
95
- - lib/arelastic/searches/filter.rb
96
83
  - lib/arelastic/searches/from.rb
97
84
  - lib/arelastic/searches/query.rb
98
85
  - lib/arelastic/searches/search.rb
@@ -119,30 +106,25 @@ files:
119
106
  - test/arelastic/builders/query_test.rb
120
107
  - test/arelastic/builders/search_test.rb
121
108
  - test/arelastic/builders/sort_test.rb
122
- - test/arelastic/filters/exists_test.rb
123
- - test/arelastic/filters/filter_test.rb
124
- - test/arelastic/filters/geo_bounding_box_test.rb
125
- - test/arelastic/filters/geo_distance_test.rb
126
- - test/arelastic/filters/has_child_test.rb
127
- - test/arelastic/filters/ids_test.rb
128
- - test/arelastic/filters/match_all_test.rb
129
- - test/arelastic/filters/match_test.rb
130
- - test/arelastic/filters/missing_test.rb
131
- - test/arelastic/filters/nested_test.rb
132
- - test/arelastic/filters/not_test.rb
133
- - test/arelastic/filters/query_test.rb
134
- - test/arelastic/filters/regexp_test.rb
135
- - test/arelastic/filters/script_test.rb
136
109
  - test/arelastic/mappings/types/binary_test.rb
137
110
  - test/arelastic/mappings/types/multi_field_test.rb
138
111
  - test/arelastic/mappings/types/string_test.rb
139
112
  - test/arelastic/nodes/node_test.rb
140
113
  - test/arelastic/queries/bool_test.rb
141
- - test/arelastic/queries/filtered_test.rb
114
+ - test/arelastic/queries/exists_test.rb
115
+ - test/arelastic/queries/filter_test.rb
116
+ - test/arelastic/queries/geo_bounding_box_test.rb
117
+ - test/arelastic/queries/geo_distance_test.rb
118
+ - test/arelastic/queries/has_child_test.rb
119
+ - test/arelastic/queries/ids_test.rb
142
120
  - test/arelastic/queries/match_all_test.rb
121
+ - test/arelastic/queries/match_none_test.rb
122
+ - test/arelastic/queries/match_test.rb
143
123
  - test/arelastic/queries/multi_match_test.rb
144
124
  - test/arelastic/queries/query_string_test.rb
145
125
  - test/arelastic/queries/query_test.rb
126
+ - test/arelastic/queries/regexp_test.rb
127
+ - test/arelastic/queries/script_test.rb
146
128
  - test/arelastic/queries/simple_query_string_test.rb
147
129
  - test/arelastic/queries/wildcard_test.rb
148
130
  - test/arelastic/searches/aggregations_test.rb
@@ -1,21 +0,0 @@
1
- require 'arelastic/filters/filter'
2
-
3
- require 'arelastic/filters/and'
4
- require 'arelastic/filters/exists'
5
- require 'arelastic/filters/geo_bounding_box'
6
- require 'arelastic/filters/geo_distance'
7
- require 'arelastic/filters/has_child'
8
- require 'arelastic/filters/ids'
9
- require 'arelastic/filters/limit'
10
- require 'arelastic/filters/match_all'
11
- require 'arelastic/filters/missing'
12
- require 'arelastic/filters/nested'
13
- require 'arelastic/filters/not'
14
- require 'arelastic/filters/or'
15
- require 'arelastic/filters/prefix'
16
- require 'arelastic/filters/query'
17
- require 'arelastic/filters/range'
18
- require 'arelastic/filters/regexp'
19
- require 'arelastic/filters/script'
20
- require 'arelastic/filters/term'
21
- require 'arelastic/filters/terms'
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class And < Arelastic::Filters::Filter
4
- polyadic 'and'
5
- end
6
- end
7
- end
@@ -1,15 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Exists < Arelastic::Filters::Filter
4
- attr_reader :field
5
-
6
- def initialize field
7
- @field = field
8
- end
9
-
10
- def as_elastic
11
- {"exists" => { "field" => field }}
12
- end
13
- end
14
- end
15
- end
@@ -1,17 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Filter < Arelastic::Queries::Query
4
- def or other
5
- Arelastic::Filters::Or.new [self, other]
6
- end
7
-
8
- def and other
9
- Arelastic::Filters::And.new [self, other]
10
- end
11
-
12
- def nested path
13
- Arelastic::Filters::Nested.new path, self
14
- end
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class MatchAll < Arelastic::Filters::Filter
4
- def as_elastic
5
- {"match_all" => {}}
6
- end
7
- end
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Nested < Arelastic::Filters::Filter
4
- include Arelastic::Nodes::Nested
5
- end
6
- end
7
- end
@@ -1,15 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Not < Arelastic::Filters::Filter
4
- attr_reader :expr
5
-
6
- def initialize expr
7
- @expr = expr
8
- end
9
-
10
- def as_elastic
11
- {"not" => convert_to_elastic(expr)}
12
- end
13
- end
14
- end
15
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Or < Arelastic::Filters::Filter
4
- polyadic 'or'
5
- end
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Prefix < Arelastic::Filters::Filter
4
- binary 'prefix'
5
- end
6
- end
7
- end
@@ -1,14 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Query < Arelastic::Filters::Filter
4
- attr_reader :expr
5
- def initialize(expr)
6
- @expr = expr.is_a?(String) ? {'query_string' => {'query' => expr}} : expr
7
- end
8
-
9
- def as_elastic
10
- {'query' => convert_to_elastic(expr)}
11
- end
12
- end
13
- end
14
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Range < Arelastic::Filters::Filter
4
- binary 'range'
5
- end
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Term < Arelastic::Filters::Filter
4
- binary 'term'
5
- end
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Filters
3
- class Terms < Arelastic::Filters::Filter
4
- binary 'terms'
5
- end
6
- end
7
- end
@@ -1,29 +0,0 @@
1
- module Arelastic
2
- module Nodes
3
- module Nested
4
- def self.included(klass)
5
- klass.class_eval do
6
- attr_accessor :path, :expr
7
- end
8
- end
9
-
10
- def initialize(path, expr)
11
- @path = path
12
- @expr = expr
13
- end
14
-
15
- def search_context
16
- is_a?(Arelastic::Filters::Filter) ? 'filter' : 'query'
17
- end
18
-
19
- def as_elastic
20
- params = {
21
- 'path' => path,
22
- search_context => convert_to_elastic(expr)
23
- }
24
-
25
- { 'nested' => params }
26
- end
27
- end
28
- end
29
- end
@@ -1,19 +0,0 @@
1
- module Arelastic
2
- module Queries
3
- class Filtered < Arelastic::Queries::Query
4
- attr_accessor :query, :filter
5
- def initialize(query: nil, filter: nil)
6
- @query = query
7
- @filter = filter
8
- end
9
-
10
- def as_elastic
11
- searches = {}
12
- searches['query'] = convert_to_elastic(query) if query
13
- searches['filter'] = convert_to_elastic(filter) if filter
14
-
15
- { "filtered" => searches }
16
- end
17
- end
18
- end
19
- end
@@ -1,7 +0,0 @@
1
- module Arelastic
2
- module Searches
3
- class Filter < Arelastic::Searches::Search
4
- unary 'filter', expects: Arelastic::Filters::Filter
5
- end
6
- end
7
- end
@@ -1,9 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Filters::ExistsTest < Minitest::Test
4
- def test_as_elastic
5
- expected = {"exists" => { "field" => "color" }}
6
-
7
- assert_equal expected, Arelastic::Filters::Exists.new('color').as_elastic
8
- end
9
- end
@@ -1,36 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::FilterTest < Minitest::Test
4
- def test_and
5
- filter = Arelastic::Filters::Filter.new
6
-
7
- and_filter = filter.and(filter)
8
-
9
- assert and_filter.is_a?(Arelastic::Filters::And)
10
- assert_equal [filter, filter], and_filter.children
11
- end
12
-
13
- def test_or
14
- filter = Arelastic::Filters::Filter.new
15
-
16
- and_filter = filter.or(filter)
17
-
18
- assert and_filter.is_a?(Arelastic::Filters::Or)
19
- assert_equal [filter, filter], and_filter.children
20
- end
21
-
22
- def test_nested
23
- filter = Arelastic::Filters::Term.new('foo', 'bar')
24
-
25
- nested_filter = filter.nested 'links'
26
-
27
- assert nested_filter.is_a?(Arelastic::Filters::Nested)
28
- expected = {
29
- "nested" => {
30
- "path" => "links",
31
- "filter" => filter.as_elastic
32
- }
33
- }
34
- assert_equal(expected, nested_filter.as_elastic)
35
- end
36
- end
@@ -1,10 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Filters::MatchAllTest < Minitest::Test
4
- def test_as_elastic
5
- match_all = Arelastic::Queries::MatchAll.new
6
- expected = {"match_all" => {}}
7
-
8
- assert_equal expected, match_all.as_elastic
9
- end
10
- end
@@ -1,15 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Filters::MissingTest < Minitest::Test
4
- def test_as_elastic
5
- expected = {"missing" => { "field" => "color" }}
6
-
7
- assert_equal expected, Arelastic::Filters::Missing.new('color').as_elastic
8
- end
9
-
10
- def test_with_options
11
- expected = {"missing" => { "field" => "color", "null_value" => true }}
12
-
13
- assert_equal expected, Arelastic::Filters::Missing.new('color', 'null_value' => true).as_elastic
14
- end
15
- end
@@ -1,19 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Filters::NestedTest < Minitest::Test
4
- def test_as_elastic
5
- expected = {
6
- "nested" => {
7
- "path" => "bunnies",
8
- "filter" => {
9
- "match" => {
10
- "name" => "Harry"
11
- }
12
- }
13
- }
14
- }
15
-
16
- assert_equal expected, Arelastic::Filters::Nested.new('bunnies', Arelastic::Queries::Match.new('name', 'Harry')).as_elastic
17
- end
18
-
19
- end
@@ -1,9 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Filters::NotTest < Minitest::Test
4
- def test_as_elastic
5
- expected = {"not" => { "foo" => "bar" }}
6
-
7
- assert_equal expected, Arelastic::Filters::Not.new('foo' => 'bar').as_elastic
8
- end
9
- end
@@ -1,15 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Filters::QueryTest < Minitest::Test
4
- def test_as_elastic
5
- expected = {"query" => { "match" => {"message" => "this is a test"} }}
6
-
7
- assert_equal expected, Arelastic::Filters::Query.new(Arelastic::Queries::Match.new('message', 'this is a test')).as_elastic
8
- end
9
-
10
- def test_with_string
11
- expected = {'query' => { 'query_string' => {'query' => 'blue dog'}}}
12
-
13
- assert_equal expected, Arelastic::Filters::Query.new("blue dog").as_elastic
14
- end
15
- end
@@ -1,20 +0,0 @@
1
- require 'helper'
2
-
3
- class Arelastic::Queries::FilteredTest < Minitest::Test
4
- def test_as_elastic
5
- filtered = Arelastic::Queries::Filtered.new(
6
- query: {"query_string" => "bar"},
7
- filter: {"term" => "baz"}
8
- )
9
- expected = {"filtered" => {"query" => {"query_string" => "bar"}, "filter" => {"term" => "baz"}}}
10
-
11
- assert_equal expected, filtered.as_elastic
12
- end
13
-
14
- def test_as_elastic_with_query_node
15
- filtered = Arelastic::Queries::Filtered.new(query: Arelastic::Queries::QueryString.new("bar"))
16
- expected = {"filtered" => {"query" => {"query_string" => {"query"=>"bar"}}}}
17
-
18
- assert_equal expected, filtered.as_elastic
19
- end
20
- end