arelastic 0.2.0 → 0.2.1

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.
data/lib/arelastic.rb CHANGED
@@ -2,6 +2,7 @@ require 'arelastic/arities'
2
2
  require 'arelastic/nodes'
3
3
  require 'arelastic/facets'
4
4
  require 'arelastic/filters'
5
+ require 'arelastic/mappings'
5
6
  require 'arelastic/queries'
6
7
  require 'arelastic/searches'
7
8
 
@@ -48,18 +48,10 @@ module Arelastic
48
48
  Arelastic::Filters::Exists.new field
49
49
  end
50
50
 
51
- def present
52
- exists.and(not_eq(''))
53
- end
54
-
55
51
  def missing(options = {})
56
52
  Arelastic::Filters::Missing.new field, options
57
53
  end
58
54
 
59
- def blank
60
- missing.or(eq(''))
61
- end
62
-
63
55
  def gteq other
64
56
  range 'gte' => other
65
57
  end
@@ -1,7 +1,14 @@
1
1
  module Arelastic
2
2
  module Filters
3
3
  class Query < Arelastic::Filters::Filter
4
- unary 'query'
4
+ attr_reader :expr
5
+ def initialize(expr)
6
+ @expr = expr.is_a?(String) ? {'query_string' => expr} : expr
7
+ end
8
+
9
+ def as_elastic
10
+ {'query' => convert_to_elastic(expr)}
11
+ end
5
12
  end
6
13
  end
7
14
  end
@@ -0,0 +1,9 @@
1
+ require 'arelastic/mappings/type'
2
+
3
+ require 'arelastic/mappings/types/binary'
4
+ require 'arelastic/mappings/types/boolean'
5
+ require 'arelastic/mappings/types/date'
6
+ require 'arelastic/mappings/types/multi_field'
7
+ require 'arelastic/mappings/types/number'
8
+ require 'arelastic/mappings/types/object'
9
+ require 'arelastic/mappings/types/string'
@@ -0,0 +1,14 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class Type < Arelastic::Nodes::Node
4
+ def self.for_type(type)
5
+ end
6
+
7
+ def as_elastic
8
+ {
9
+ "type" => type_name
10
+ }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class Binary < Arelastic::Mappings::Type
4
+ for_type 'binary'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class Boolean < Arelastic::Mappings::Type
4
+ for_type 'boolean'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class Date < Arelastic::Mappings::Type
4
+ for_type 'date'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class MultiField < Arelastic::Mappings::Type
4
+ for_type 'multi_field'
5
+ end
6
+ end
7
+ end
8
+ # "name" : {
9
+ # "type" : "multi_field",
10
+ # "fields" : {
11
+ # "name" : {"type" : "string", "index" : "analyzed"},
12
+ # "untouched" : {"type" : "string", "index" : "not_analyzed"}
13
+ # }
14
+ # }
@@ -0,0 +1,8 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class Number < Arelastic::Mappings::Type
4
+ def initialize(type, options = {})
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,26 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class Object < Arelastic::Mappings::Type
4
+ for_type 'object'
5
+ end
6
+ end
7
+ end
8
+ # {
9
+ # "tweet" : {
10
+ # "properties" : {
11
+ # "person" : {
12
+ # "type" : "object",
13
+ # "properties" : {
14
+ # "name" : {
15
+ # "properties" : {
16
+ # "first_name" : {"type" : "string"},
17
+ # "last_name" : {"type" : "string"}
18
+ # }
19
+ # },
20
+ # "sid" : {"type" : "string", "index" : "not_analyzed"}
21
+ # }
22
+ # }
23
+ # "message" : {"type" : "string"}
24
+ # }
25
+ # }
26
+ # }
@@ -0,0 +1,6 @@
1
+ module Arelastic
2
+ module Mappings
3
+ class String < Arelastic::Mappings::Type
4
+ end
5
+ end
6
+ end
@@ -6,6 +6,11 @@ class Arelastic::Builders::FilterTest < MiniTest::Spec
6
6
  assert_equal expected, Arelastic::Builders::Filter.ids('5', '6').as_elastic
7
7
  end
8
8
 
9
+ def test_not
10
+ expected = {"not" => {"terms" => {"color" => "blue"}}}
11
+ assert_equal expected, Arelastic::Builders::Filter.not({"terms" => {"color" => "blue"}}).as_elastic
12
+ end
13
+
9
14
  def test_eq
10
15
  expected = {"term"=>{"color"=>"blue"}}
11
16
  assert_equal expected, builder.eq('blue').as_elastic
@@ -49,22 +54,11 @@ class Arelastic::Builders::FilterTest < MiniTest::Spec
49
54
  assert_equal expected, builder.exists.as_elastic
50
55
  end
51
56
 
52
- def test_present
53
- expected = {"and" => [{"exists" => {"field"=>"color"}}, {"not" => {"term"=>{"color"=>""}}}]}
54
- assert_equal expected, builder.present.as_elastic
55
- end
56
-
57
57
  def test_missing
58
58
  expected = {"missing" => {"field" => "color"}}
59
59
  assert_equal expected, builder.missing.as_elastic
60
60
  end
61
61
 
62
- def test_blank
63
- expected = {"or" => [{"missing" => {"field"=>"color"}}, {"term" => {"color"=>""}}]}
64
- assert_equal expected, builder.blank.as_elastic
65
- end
66
-
67
-
68
62
  def test_range
69
63
  expected = {"range" => {"color" => {"lt" => 5}}}
70
64
  assert_equal expected, builder.lt(5).as_elastic
@@ -6,4 +6,10 @@ class Arelastic::Filters::QueryTest < MiniTest::Spec
6
6
 
7
7
  assert_equal expected, Arelastic::Filters::Query.new(Arelastic::Queries::Match.new('message', 'this is a test')).as_elastic
8
8
  end
9
+
10
+ def test_with_string
11
+ expected = {"query" => { "query_string" => "blue dog"}}
12
+
13
+ assert_equal expected, Arelastic::Filters::Query.new("blue dog").as_elastic
14
+ end
9
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arelastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-16 00:00:00.000000000 Z
12
+ date: 2013-03-14 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Build Elastic Search queries with objects
15
15
  email: developer@matthewhiggins.com
@@ -50,6 +50,15 @@ files:
50
50
  - lib/arelastic/filters/term.rb
51
51
  - lib/arelastic/filters/terms.rb
52
52
  - lib/arelastic/filters.rb
53
+ - lib/arelastic/mappings/type.rb
54
+ - lib/arelastic/mappings/types/binary.rb
55
+ - lib/arelastic/mappings/types/boolean.rb
56
+ - lib/arelastic/mappings/types/date.rb
57
+ - lib/arelastic/mappings/types/multi_field.rb
58
+ - lib/arelastic/mappings/types/number.rb
59
+ - lib/arelastic/mappings/types/object.rb
60
+ - lib/arelastic/mappings/types/string.rb
61
+ - lib/arelastic/mappings.rb
53
62
  - lib/arelastic/nodes/hash_group.rb
54
63
  - lib/arelastic/nodes/node.rb
55
64
  - lib/arelastic/nodes.rb
@@ -108,17 +117,17 @@ rdoc_options: []
108
117
  require_paths:
109
118
  - lib
110
119
  required_ruby_version: !ruby/object:Gem::Requirement
111
- none: false
112
120
  requirements:
113
121
  - - ! '>='
114
122
  - !ruby/object:Gem::Version
115
123
  version: 1.9.3
116
- required_rubygems_version: !ruby/object:Gem::Requirement
117
124
  none: false
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
126
  requirements:
119
127
  - - ! '>='
120
128
  - !ruby/object:Gem::Version
121
129
  version: 1.8.11
130
+ none: false
122
131
  requirements: []
123
132
  rubyforge_project:
124
133
  rubygems_version: 1.8.24