rubberband 0.0.8 → 0.0.9

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.
@@ -14,6 +14,7 @@ module ElasticSearch
14
14
 
15
15
  id = options.delete(:id)
16
16
  if @batch
17
+ #TODO add routing, parent
17
18
  @batch << { :index => { :_index => index, :_type => type, :_id => id }}
18
19
  @batch << document
19
20
  else
@@ -43,6 +44,7 @@ module ElasticSearch
43
44
  index, type, options = extract_required_scope(options)
44
45
 
45
46
  if @batch
47
+ #TODO add routing, parent
46
48
  @batch << { :delete => { :_index => index, :_type => type, :_id => id }}
47
49
  else
48
50
  result = execute(:delete, index, type, id, options)
@@ -71,14 +73,12 @@ module ElasticSearch
71
73
 
72
74
  options[:fields] = "_id" if options[:ids_only]
73
75
 
74
- # options that hits take: per_page, page, ids_only
75
- hits_options = options.select { |k, v| [:per_page, :page, :ids_only].include?(k) }
76
-
77
76
  # options that elasticsearch doesn't recognize: page, per_page, ids_only, limit, offset
78
- options.reject! { |k, v| [:page, :per_page, :ids_only, :limit, :offset].include?(k) }
77
+ search_options = options.reject { |k, v| [:page, :per_page, :ids_only, :limit, :offset].include?(k) }
78
+
79
+ response = execute(:search, index, type, query, search_options)
79
80
 
80
- response = execute(:search, index, type, query, options)
81
- Hits.new(response, hits_options).freeze #ids_only returns array of ids instead of hits
81
+ Hits.new(response, {:per_page => options[:per_page], :page => options[:page], :ids_only => options[:ids_only]}).freeze #ids_only returns array of ids instead of hits
82
82
  end
83
83
 
84
84
  #ids_only Return ids instead of hits
@@ -99,10 +99,10 @@ module ElasticSearch
99
99
 
100
100
  # Starts a bulk operation batch and yields self. Index and delete requests will be
101
101
  # queued until the block closes, then sent as a single _bulk call.
102
- def bulk
102
+ def bulk(options={})
103
103
  @batch = []
104
104
  yield(self)
105
- response = execute(:bulk, @batch)
105
+ response = execute(:bulk, @batch, options)
106
106
  ensure
107
107
  @batch = nil
108
108
  end
@@ -69,9 +69,9 @@ module ElasticSearch
69
69
  encoder.decode(response.body) # {"count", "_shards"=>{"failed", "total", "successful"}}
70
70
  end
71
71
 
72
- def bulk(actions)
72
+ def bulk(actions, options={})
73
73
  body = actions.inject("") { |a, s| a << encoder.encode(s) << "\n" }
74
- response = request(:post, {:op => '_bulk'}, {}, body)
74
+ response = request(:post, {:op => '_bulk'}, options, body)
75
75
  handle_error(response) unless response.status == 200
76
76
  encoder.decode(response.body) # {"items => [ {"delete"/"create" => {"_index", "_type", "_id", "ok"}} ] }
77
77
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rubberband}
8
- s.version = "0.0.8"
8
+ s.version = "0.0.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["grantr"]
12
- s.date = %q{2011-02-22}
12
+ s.date = %q{2011-02-23}
13
13
  s.description = %q{An ElasticSearch client with ThriftClient-like failover handling.}
14
14
  s.email = %q{grantr@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -27,4 +27,7 @@ describe "bulk ops" do
27
27
  @client.get("3").socks.should == "stripey"
28
28
  @client.get("4").socks.should == "argyle"
29
29
  end
30
+
31
+ it "should take options"
32
+ # check that url generated has options in query string
30
33
  end
@@ -31,4 +31,13 @@ describe "index ops" do
31
31
  @client.search(:query => { :term => { :foo => 'baz' }}).should have(2).items
32
32
  @client.count(:term => { :foo => 'baz' }).should == 2
33
33
  end
34
+
35
+ it 'should return ids when given :ids_only' do
36
+ @client.index({:socks => "stripey"}, :id => "5")
37
+ @client.index({:stripey => "stripey too"}, :id => "6")
38
+ @client.refresh
39
+
40
+ results = @client.search({:query => { :field => { :socks => 'stripey' }}}, :ids_only => true)
41
+ results.should include("5")
42
+ end
34
43
  end
@@ -1,5 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
+ #TODO rewrite this to check the generated url with mocks
3
4
  describe "type and index parameters" do
4
5
  before(:all) do
5
6
  @first_index = 'first-' + Time.now.to_i.to_s
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 8
9
- version: 0.0.8
8
+ - 9
9
+ version: 0.0.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - grantr
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-22 00:00:00 -08:00
17
+ date: 2011-02-23 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -237,7 +237,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
237
237
  requirements:
238
238
  - - ">="
239
239
  - !ruby/object:Gem::Version
240
- hash: 2137179161715678959
240
+ hash: -2113882144738525775
241
241
  segments:
242
242
  - 0
243
243
  version: "0"