esearch 0.2.1 → 0.2.2
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 +4 -4
- data/.rubocop.yml +6 -0
- data/.travis.yml +2 -5
- data/Changelog.md +5 -0
- data/Gemfile +1 -1
- data/Gemfile.devtools +22 -18
- data/config/flay.yml +2 -2
- data/config/reek.yml +5 -4
- data/config/rubocop.yml +81 -0
- data/esearch.gemspec +7 -7
- data/lib/esearch.rb +3 -1
- data/lib/esearch/cluster.rb +6 -5
- data/lib/esearch/command.rb +15 -7
- data/lib/esearch/command/cluster.rb +6 -4
- data/lib/esearch/command/document.rb +13 -13
- data/lib/esearch/command/exist.rb +6 -4
- data/lib/esearch/command/index.rb +7 -5
- data/lib/esearch/command/search.rb +5 -4
- data/lib/esearch/command/status.rb +5 -3
- data/lib/esearch/connection.rb +4 -3
- data/lib/esearch/document.rb +4 -2
- data/lib/esearch/index.rb +4 -2
- data/lib/esearch/indices.rb +8 -6
- data/lib/esearch/mixin.rb +8 -6
- data/lib/esearch/presenter.rb +5 -3
- data/lib/esearch/presenter/aspect.rb +5 -3
- data/lib/esearch/presenter/aspect/range.rb +11 -9
- data/lib/esearch/presenter/aspect/term.rb +6 -4
- data/lib/esearch/presenter/cluster.rb +6 -4
- data/lib/esearch/presenter/document.rb +12 -10
- data/lib/esearch/presenter/facet.rb +9 -9
- data/lib/esearch/presenter/hit.rb +9 -8
- data/lib/esearch/presenter/hits.rb +8 -7
- data/lib/esearch/presenter/index.rb +9 -7
- data/lib/esearch/presenter/search.rb +7 -5
- data/lib/esearch/presenter/status.rb +6 -4
- data/lib/esearch/request.rb +5 -3
- data/lib/esearch/type.rb +5 -2
- data/spec/integration/esearch/spike_spec.rb +15 -10
- data/spec/spec_helper.rb +6 -5
- data/spec/support/example_group_methods.rb +2 -0
- data/spec/support/ice_nine_config.rb +2 -0
- data/spec/unit/esearch/cluster_spec.rb +59 -0
- data/spec/unit/esearch/command/class_methods/run_spec.rb +3 -1
- data/spec/unit/esearch/command/cluster/health/run_spec.rb +2 -0
- data/spec/unit/esearch/command/document/delete/run_spec.rb +3 -1
- data/spec/unit/esearch/command/document/get/result_spec.rb +5 -3
- data/spec/unit/esearch/command/document/index/create/run_spec.rb +6 -2
- data/spec/unit/esearch/command/document/index/run_create_spec.rb +6 -2
- data/spec/unit/esearch/command/document/index/run_spec.rb +3 -1
- data/spec/unit/esearch/command/document/index/run_update_spec.rb +6 -2
- data/spec/unit/esearch/command/document/index/update/run_spec.rb +6 -2
- data/spec/unit/esearch/command/exist/result_spec.rb +5 -3
- data/spec/unit/esearch/command/index/create/run_spec.rb +2 -0
- data/spec/unit/esearch/command/index/delete/run_spec.rb +3 -1
- data/spec/unit/esearch/command/index/refresh/run_spec.rb +3 -1
- data/spec/unit/esearch/command/result_spec.rb +17 -7
- data/spec/unit/esearch/command/search/run_spec.rb +2 -0
- data/spec/unit/esearch/command/status/run_spec.rb +3 -1
- data/spec/unit/esearch/connection/class_methods/build_spec.rb +2 -0
- data/spec/unit/esearch/connection/run_spec.rb +6 -4
- data/spec/unit/esearch/document_spec.rb +44 -0
- data/spec/unit/esearch/index_spec.rb +42 -0
- data/spec/unit/esearch/indices/all_spec.rb +16 -0
- data/spec/unit/esearch/indices_spec.rb +18 -0
- data/spec/unit/esearch/mixin/document/index_create_spec.rb +2 -0
- data/spec/unit/esearch/mixin/document/index_spec.rb +2 -0
- data/spec/unit/esearch/mixin/document/index_update_spec.rb +2 -0
- data/spec/unit/esearch/mixin/exist/exist_predicate_spec.rb +2 -0
- data/spec/unit/esearch/mixin/index/refresh_spec.rb +2 -0
- data/spec/unit/esearch/mixin/index/status_spec.rb +2 -0
- data/spec/unit/esearch/mixin/search/search_spec.rb +2 -0
- data/spec/unit/esearch/presenter/aspect/range/from_spec.rb +2 -0
- data/spec/unit/esearch/presenter/aspect/range/to_spec.rb +2 -0
- data/spec/unit/esearch/presenter/class_methods/new_spec.rb +2 -0
- data/spec/unit/esearch/presenter/facet_spec.rb +60 -0
- data/spec/unit/esearch/presenter/hit/fields_spec.rb +2 -0
- data/spec/unit/esearch/presenter/hit/source_spec.rb +2 -0
- data/spec/unit/esearch/presenter/hits/each_spec.rb +7 -5
- data/spec/unit/esearch/presenter/hits/size_spec.rb +5 -3
- data/spec/unit/esearch/presenter/search_spec.rb +50 -0
- data/spec/unit/esearch/request_spec.rb +96 -0
- data/spec/unit/esearch/type_spec.rb +37 -0
- metadata +34 -50
- data/spec/unit/esearch/cluster/class_methods/connect_spec.rb +0 -16
- data/spec/unit/esearch/cluster/health_spec.rb +0 -10
- data/spec/unit/esearch/cluster/index_spec.rb +0 -11
- data/spec/unit/esearch/cluster/indices_spec.rb +0 -11
- data/spec/unit/esearch/cluster/path_spec.rb +0 -11
- data/spec/unit/esearch/document/connection_spec.rb +0 -12
- data/spec/unit/esearch/document/delete_spec.rb +0 -12
- data/spec/unit/esearch/document/get_spec.rb +0 -12
- data/spec/unit/esearch/index/create_spec.rb +0 -12
- data/spec/unit/esearch/index/delete_spec.rb +0 -11
- data/spec/unit/esearch/index/type_spec.rb +0 -12
- data/spec/unit/esearch/indices/all/path_spec.rb +0 -12
- data/spec/unit/esearch/presenter/facet/build_spec.rb +0 -26
- data/spec/unit/esearch/presenter/facet/class_methods/build_spec.rb +0 -26
- data/spec/unit/esearch/request/initialize_spec.rb +0 -39
- data/spec/unit/esearch/request/run_spec.rb +0 -39
- data/spec/unit/esearch/type/connection_spec.rb +0 -15
- data/spec/unit/esearch/type/document_spec.rb +0 -12
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Command
|
|
3
5
|
# Command to check existance of objects
|
|
4
6
|
class Exist < self
|
|
5
7
|
|
|
6
|
-
EXPECTED_STATI = [
|
|
8
|
+
EXPECTED_STATI = [200, 404].freeze
|
|
7
9
|
|
|
8
10
|
# Return result
|
|
9
11
|
#
|
|
@@ -32,6 +34,6 @@ module Esearch
|
|
|
32
34
|
Request.head(context_path)
|
|
33
35
|
end
|
|
34
36
|
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
37
|
+
end # Exists
|
|
38
|
+
end # Command
|
|
39
|
+
end # Esearch
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Command
|
|
3
5
|
# Base class for commands on index
|
|
@@ -7,7 +9,7 @@ module Esearch
|
|
|
7
9
|
class Create < self
|
|
8
10
|
include Concord.new(:context, :settings)
|
|
9
11
|
|
|
10
|
-
EXPECT_STATUS = [
|
|
12
|
+
EXPECT_STATUS = [201].freeze
|
|
11
13
|
PRESENTER = Presenter::Index::Create
|
|
12
14
|
|
|
13
15
|
private
|
|
@@ -60,7 +62,7 @@ module Esearch
|
|
|
60
62
|
Request.post(context_path.join('_refresh'))
|
|
61
63
|
end
|
|
62
64
|
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
65
|
+
end # Delete
|
|
66
|
+
end # Index
|
|
67
|
+
end # Command
|
|
68
|
+
end # Esearch
|
data/lib/esearch/connection.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
# Connection to an elasticsearch cluster
|
|
3
5
|
class Connection
|
|
@@ -15,7 +17,6 @@ module Esearch
|
|
|
15
17
|
new(Faraday.new(uri), logger)
|
|
16
18
|
end
|
|
17
19
|
|
|
18
|
-
|
|
19
20
|
# Run request
|
|
20
21
|
#
|
|
21
22
|
# @param [Command::Request] request
|
|
@@ -32,5 +33,5 @@ module Esearch
|
|
|
32
33
|
response
|
|
33
34
|
end
|
|
34
35
|
|
|
35
|
-
end
|
|
36
|
-
end
|
|
36
|
+
end # Connection
|
|
37
|
+
end # Esearch
|
data/lib/esearch/document.rb
CHANGED
data/lib/esearch/index.rb
CHANGED
data/lib/esearch/indices.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
# Handler for set of indices
|
|
3
5
|
class Indices
|
|
@@ -27,6 +29,8 @@ module Esearch
|
|
|
27
29
|
class All < self
|
|
28
30
|
include Concord.new(:connection)
|
|
29
31
|
|
|
32
|
+
PATH = Pathname.new('/_all').freeze
|
|
33
|
+
|
|
30
34
|
# Return connection
|
|
31
35
|
#
|
|
32
36
|
# @return [Connection]
|
|
@@ -42,11 +46,9 @@ module Esearch
|
|
|
42
46
|
# @api private
|
|
43
47
|
#
|
|
44
48
|
def path
|
|
45
|
-
|
|
49
|
+
PATH
|
|
46
50
|
end
|
|
47
51
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
end
|
|
52
|
+
end # All
|
|
53
|
+
end # Indices
|
|
54
|
+
end # Esearch
|
data/lib/esearch/mixin.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
# Namespace for handler mixins
|
|
3
5
|
module Mixin
|
|
@@ -19,7 +21,7 @@ module Esearch
|
|
|
19
21
|
Command::Exist.run(self)
|
|
20
22
|
end
|
|
21
23
|
|
|
22
|
-
end
|
|
24
|
+
end # Exist
|
|
23
25
|
|
|
24
26
|
# Mixin that adds document operations
|
|
25
27
|
module Document
|
|
@@ -63,7 +65,7 @@ module Esearch
|
|
|
63
65
|
Command::Document::Index::Update.run(self, document, options)
|
|
64
66
|
end
|
|
65
67
|
|
|
66
|
-
end
|
|
68
|
+
end # Document
|
|
67
69
|
|
|
68
70
|
# Mixin that adds index commands
|
|
69
71
|
module Index
|
|
@@ -88,7 +90,7 @@ module Esearch
|
|
|
88
90
|
Command::Index::Status.run(self)
|
|
89
91
|
end
|
|
90
92
|
|
|
91
|
-
end
|
|
93
|
+
end # Index
|
|
92
94
|
|
|
93
95
|
# Mixin for search command
|
|
94
96
|
module Search
|
|
@@ -105,7 +107,7 @@ module Esearch
|
|
|
105
107
|
Command::Search.run(self, query)
|
|
106
108
|
end
|
|
107
109
|
|
|
108
|
-
end
|
|
110
|
+
end #sEarch
|
|
109
111
|
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
+
end # Mixin
|
|
113
|
+
end # Esearch
|
data/lib/esearch/presenter.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
# Abstract base class for json response presenters
|
|
3
5
|
class Presenter
|
|
@@ -15,7 +17,7 @@ module Esearch
|
|
|
15
17
|
def self.expose_tagged_collection(key, presenter)
|
|
16
18
|
key = key.to_s # caches string in closure ;)
|
|
17
19
|
define_method(key) do ||
|
|
18
|
-
raw.fetch(key).map do |name, element|
|
|
20
|
+
raw.fetch(key).map do |name, element|
|
|
19
21
|
presenter.new(element.merge('name' => name))
|
|
20
22
|
end
|
|
21
23
|
end
|
|
@@ -39,5 +41,5 @@ module Esearch
|
|
|
39
41
|
end
|
|
40
42
|
private_class_method :expose_primitive
|
|
41
43
|
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
+
end # Presenter
|
|
45
|
+
end # Esearch
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Presenter
|
|
3
5
|
class Aspect
|
|
4
6
|
|
|
5
7
|
# Range aspect
|
|
6
8
|
class Range < self
|
|
7
|
-
|
|
8
|
-
# Return range start
|
|
9
|
+
|
|
10
|
+
# Return range start
|
|
9
11
|
#
|
|
10
12
|
# @return [Float]
|
|
11
13
|
# if present
|
|
@@ -19,7 +21,7 @@ module Esearch
|
|
|
19
21
|
raw['from']
|
|
20
22
|
end
|
|
21
23
|
|
|
22
|
-
# Return range end
|
|
24
|
+
# Return range end
|
|
23
25
|
#
|
|
24
26
|
# @return [Float]
|
|
25
27
|
# if present
|
|
@@ -41,7 +43,7 @@ module Esearch
|
|
|
41
43
|
#
|
|
42
44
|
expose_primitive(:total_count)
|
|
43
45
|
|
|
44
|
-
# Return total
|
|
46
|
+
# Return total
|
|
45
47
|
#
|
|
46
48
|
# @return [Float]
|
|
47
49
|
#
|
|
@@ -49,7 +51,7 @@ module Esearch
|
|
|
49
51
|
#
|
|
50
52
|
expose_primitive(:total)
|
|
51
53
|
|
|
52
|
-
# Return mean
|
|
54
|
+
# Return mean
|
|
53
55
|
#
|
|
54
56
|
# @return [Float]
|
|
55
57
|
#
|
|
@@ -57,7 +59,7 @@ module Esearch
|
|
|
57
59
|
#
|
|
58
60
|
expose_primitive(:mean)
|
|
59
61
|
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
62
|
+
end # Range
|
|
63
|
+
end # Aspect
|
|
64
|
+
end # Presenter
|
|
65
|
+
end # Esearch
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Presenter
|
|
3
5
|
# Base class for cluster presenters
|
|
@@ -78,7 +80,7 @@ module Esearch
|
|
|
78
80
|
#
|
|
79
81
|
expose_primitive('unassigned_shards')
|
|
80
82
|
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
83
|
+
end # Health
|
|
84
|
+
end # Cluster
|
|
85
|
+
end # Presenter
|
|
86
|
+
end # Esearch
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Presenter
|
|
3
5
|
# Base class result of document command presenters
|
|
@@ -52,11 +54,11 @@ module Esearch
|
|
|
52
54
|
|
|
53
55
|
# Index operation
|
|
54
56
|
class Index < self
|
|
55
|
-
end
|
|
57
|
+
end # Index
|
|
56
58
|
|
|
57
59
|
# Update operation
|
|
58
60
|
class Update < self
|
|
59
|
-
end
|
|
61
|
+
end # Update
|
|
60
62
|
|
|
61
63
|
# Delete operation
|
|
62
64
|
class Delete < self
|
|
@@ -73,8 +75,8 @@ module Esearch
|
|
|
73
75
|
#
|
|
74
76
|
expose_primitive(:found, :found?)
|
|
75
77
|
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
+
end # Delete
|
|
79
|
+
end # Operation
|
|
78
80
|
|
|
79
81
|
# Presenter for document get result
|
|
80
82
|
class Get < self
|
|
@@ -82,7 +84,7 @@ module Esearch
|
|
|
82
84
|
# Return source document
|
|
83
85
|
#
|
|
84
86
|
# @return [Hash]
|
|
85
|
-
#
|
|
87
|
+
#
|
|
86
88
|
# @api private
|
|
87
89
|
#
|
|
88
90
|
expose_primitive(:_source, :source)
|
|
@@ -90,13 +92,13 @@ module Esearch
|
|
|
90
92
|
# Return requested fields
|
|
91
93
|
#
|
|
92
94
|
# @return [Hash]
|
|
93
|
-
#
|
|
95
|
+
#
|
|
94
96
|
# @api private
|
|
95
97
|
#
|
|
96
98
|
expose_primitive(:fields)
|
|
97
99
|
|
|
98
|
-
end
|
|
100
|
+
end # Get
|
|
99
101
|
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
102
|
+
end # Document
|
|
103
|
+
end # Presenter
|
|
104
|
+
end # Esearch
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Presenter
|
|
3
5
|
|
|
@@ -29,7 +31,7 @@ module Esearch
|
|
|
29
31
|
#
|
|
30
32
|
def self.get(type)
|
|
31
33
|
REGISTRY.fetch(type) do
|
|
32
|
-
|
|
34
|
+
fail "Facet with type #{type.inspect} is not known"
|
|
33
35
|
end
|
|
34
36
|
end
|
|
35
37
|
private_class_method :get
|
|
@@ -42,9 +44,7 @@ module Esearch
|
|
|
42
44
|
#
|
|
43
45
|
def aspects
|
|
44
46
|
util = self.class
|
|
45
|
-
raw.fetch(util::FACET_KEY).map
|
|
46
|
-
util::ASPECT_CLASS.new(item)
|
|
47
|
-
end
|
|
47
|
+
raw.fetch(util::FACET_KEY).map(&util::ASPECT_CLASS.method(:new))
|
|
48
48
|
end
|
|
49
49
|
memoize :aspects
|
|
50
50
|
|
|
@@ -54,19 +54,19 @@ module Esearch
|
|
|
54
54
|
class Range < self
|
|
55
55
|
ASPECT_CLASS = Aspect::Range
|
|
56
56
|
FACET_KEY = 'ranges'.freeze
|
|
57
|
-
end
|
|
57
|
+
end # Range
|
|
58
58
|
|
|
59
59
|
# Facet that returns term counts
|
|
60
60
|
class Terms < self
|
|
61
61
|
ASPECT_CLASS = Aspect::Term
|
|
62
62
|
FACET_KEY = 'terms'.freeze
|
|
63
|
-
end
|
|
63
|
+
end # Terms
|
|
64
64
|
|
|
65
65
|
REGISTRY = {
|
|
66
66
|
'range' => Range,
|
|
67
67
|
'terms' => Terms
|
|
68
68
|
}.freeze
|
|
69
69
|
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
70
|
+
end # Facet
|
|
71
|
+
end # Presenter
|
|
72
|
+
end # Esearch
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
module Esearch
|
|
2
4
|
class Presenter
|
|
3
5
|
|
|
4
6
|
# Presenter for an hit
|
|
5
7
|
class Hit < self
|
|
6
|
-
|
|
8
|
+
|
|
7
9
|
# Return source field if present
|
|
8
10
|
#
|
|
9
|
-
# @return [Hash]
|
|
11
|
+
# @return [Hash]
|
|
10
12
|
# if present
|
|
11
13
|
#
|
|
12
14
|
# @return [nil]
|
|
@@ -17,10 +19,10 @@ module Esearch
|
|
|
17
19
|
def source
|
|
18
20
|
raw['_source']
|
|
19
21
|
end
|
|
20
|
-
|
|
22
|
+
|
|
21
23
|
# Return fields if present
|
|
22
24
|
#
|
|
23
|
-
# @return [Hash]
|
|
25
|
+
# @return [Hash]
|
|
24
26
|
# if present
|
|
25
27
|
#
|
|
26
28
|
# @return [nil]
|
|
@@ -64,7 +66,6 @@ module Esearch
|
|
|
64
66
|
#
|
|
65
67
|
expose_primitive(:_score, :score)
|
|
66
68
|
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
69
|
+
end # Hit
|
|
70
|
+
end # Presenter
|
|
71
|
+
end # Esearch
|