model-msearch 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/model-msearch.rb +34 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c1d012932b71a2eabd97e296d398c0f6949d4250f3d544d03324db5822abadf6
4
+ data.tar.gz: '0758a5c07d0d9b133531c0104e4fb72250f93d8a354489db0c1a964165eaa5c8'
5
+ SHA512:
6
+ metadata.gz: 6232066db43b68629b9a03c046fe399ae4b10e328c010f01d727a3d0dc6ec56e83ba7cc72016e242547d70e628701bfe18d5f9703b0f7a4740f54d2f8e6ef6e2
7
+ data.tar.gz: c4dc86dcaaa178ed02320cd14f39565781b00440c9295aad332f1d927bdeeb16029b3b52754b5ffa264a6895d8f46d41e64d91d05941cebfded8184bf453ed32
@@ -0,0 +1,34 @@
1
+ module Elasticsearch
2
+ module Model
3
+ module ClassMethods
4
+ MSEARCH_VALID_HEADERS = [:index, :type, :search_type, :preference, :routing]
5
+
6
+ def msearch!(payload)
7
+ # Extract the search body.
8
+ body = payload.map do |source|
9
+ # Reformat the search definition into something Elastic will accept.
10
+ __headers = source.search.definition.slice(*MSEARCH_VALID_HEADERS)
11
+ __definition = source.search.definition.except(*MSEARCH_VALID_HEADERS)
12
+ __body = __definition.delete(:body)
13
+
14
+ [__headers, __definition.merge(__body)]
15
+ end
16
+
17
+ # Elasticsearch expects the body to be sent in header\nbody format.
18
+ # Client#msearch automatically does this when passing an array.
19
+ body.flatten!
20
+ results = client.msearch(body: body)
21
+
22
+ # Return an array of loaded Responses.
23
+ responses = []
24
+ results["responses"].each_with_index do |result, i|
25
+ r = Response::Response.new(payload[i].klass, payload[i].search)
26
+ # 10/10 encapsulation
27
+ r.instance_variable_set(:@response, Hashie::Mash.new(result))
28
+ responses.push r
29
+ end
30
+ responses
31
+ end
32
+ end
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: model-msearch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Liam P. White
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: elasticsearch-model
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
27
+ description: msearch wrapper for Elasticsearch::Model
28
+ email: example@example.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/model-msearch.rb
34
+ homepage: http://example.com
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.7.6.2
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: msearch wrapper for Elasticsearch::Model
58
+ test_files: []