csdn-tire 0.6.1 → 0.7.0
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/tire/cluster.rb +56 -0
- data/lib/tire/dsl.rb +0 -4
- data/lib/tire/index.rb +0 -16
- data/lib/tire/version.rb +1 -1
- data/lib/tire.rb +1 -1
- data/test/integration/cluster_test.rb +31 -0
- data/test/integration/index_test.rb +0 -6
- data/test/integration/search_test.rb +11 -3
- data/test/test_helper.rb +55 -54
- metadata +3 -3
- data/lib/tire/state.rb +0 -27
- data/test/integration/state_test.rb +0 -22
data/lib/tire/cluster.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Tire
|
3
|
+
class Cluster
|
4
|
+
extend Utils
|
5
|
+
|
6
|
+
def self.url
|
7
|
+
"#{Configuration.url}/cluster"
|
8
|
+
end
|
9
|
+
|
10
|
+
# [{"host":"192.168.6.35","master":false,"online":false,"port":9500},{"host":"192.168.6.35","master":false,"online":true,"port":9400}]
|
11
|
+
def self.state(more = false)
|
12
|
+
desc_url = more ? "#{url}/_state?more=true" : "#{url}/_state?more=false"
|
13
|
+
response = Configuration.client.get(desc_url)
|
14
|
+
if response.success?
|
15
|
+
MultiJson.decode(response.body)
|
16
|
+
else
|
17
|
+
[]
|
18
|
+
end
|
19
|
+
ensure
|
20
|
+
curl = %Q|curl -X GET #{desc_url}|
|
21
|
+
logged('CLUSTER_STATE', curl)
|
22
|
+
end
|
23
|
+
|
24
|
+
# ["news","blog","ask"]
|
25
|
+
def self.index
|
26
|
+
desc_url = "#{url}/_index"
|
27
|
+
|
28
|
+
response = Configuration.client.get(desc_url)
|
29
|
+
if response.failure?
|
30
|
+
STDERR.puts "[REQUEST FAILED] \n"
|
31
|
+
raise response.to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
MultiJson.decode(response.body)
|
35
|
+
ensure
|
36
|
+
curl = %Q|curl -X GET #{desc_url}|
|
37
|
+
logged('CLUSTER INDEX', curl)
|
38
|
+
end
|
39
|
+
|
40
|
+
# {"cs2":{"host":"192.168.6.35","master":false,"online":false,"port":9500},"cs1":{"host":"192.168.6.35","master":false,"online":true,"port":9400}}
|
41
|
+
def self.host
|
42
|
+
path = "#{url}/_host"
|
43
|
+
|
44
|
+
response = Configuration.client.get(path)
|
45
|
+
if response.failure?
|
46
|
+
STDERR.puts "[REQUEST FAILED] \n"
|
47
|
+
raise response.to_s
|
48
|
+
end
|
49
|
+
|
50
|
+
MultiJson.decode(response.body)
|
51
|
+
ensure
|
52
|
+
curl = %Q|curl -X GET #{path}|
|
53
|
+
logged('CLUSTER HOST', curl)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/tire/dsl.rb
CHANGED
data/lib/tire/index.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
module Tire
|
3
3
|
class Index
|
4
4
|
include Utils
|
5
|
-
extend Utils
|
6
5
|
|
7
6
|
attr_reader :name, :response
|
8
7
|
|
@@ -10,21 +9,6 @@ module Tire
|
|
10
9
|
@name = name
|
11
10
|
end
|
12
11
|
|
13
|
-
def self.list
|
14
|
-
url = "#{Configuration.url}/cluster/_index"
|
15
|
-
|
16
|
-
@response = Configuration.client.get(url)
|
17
|
-
if @response.failure?
|
18
|
-
STDERR.puts "[REQUEST FAILED] \n"
|
19
|
-
raise @response.to_s
|
20
|
-
end
|
21
|
-
|
22
|
-
MultiJson.decode(@response.body)
|
23
|
-
ensure
|
24
|
-
curl = %Q|curl -X GET #{url}|
|
25
|
-
logged('Index list', curl)
|
26
|
-
end
|
27
|
-
|
28
12
|
def url
|
29
13
|
"#{Configuration.url}/#{@name}"
|
30
14
|
end
|
data/lib/tire/version.rb
CHANGED
data/lib/tire.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
module Tire
|
5
|
+
|
6
|
+
class ClusterIntegrationTest < Test::Unit::TestCase
|
7
|
+
include Test::Integration
|
8
|
+
|
9
|
+
context "cluster" do
|
10
|
+
should "get host" do
|
11
|
+
assert_kind_of Hash, Tire::Cluster.host
|
12
|
+
end
|
13
|
+
|
14
|
+
should "get index list" do
|
15
|
+
assert_kind_of Array, Tire::Cluster.index
|
16
|
+
end
|
17
|
+
|
18
|
+
should "get short state" do
|
19
|
+
assert_kind_of Array, Tire::Cluster.state
|
20
|
+
assert_kind_of Hash, Tire::Cluster.state.first
|
21
|
+
end
|
22
|
+
|
23
|
+
should "get more state" do
|
24
|
+
assert_kind_of Array, Tire::Cluster.state(true)
|
25
|
+
assert_kind_of Hash, Tire::Cluster.state(true).first
|
26
|
+
assert_not_nil Tire::Cluster.state(true).first["blog"]
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -10,13 +10,21 @@ module Tire
|
|
10
10
|
should "search results" do
|
11
11
|
setup_bulk
|
12
12
|
@index.refresh
|
13
|
-
|
13
|
+
|
14
|
+
max_size = 4
|
15
|
+
query = "java"
|
16
|
+
|
17
|
+
search = Tire.search(INDEX, TYPE, %Q!{"query":{"text":{"title":"#{query}"}},"size":#{max_size},"from":0}!)
|
18
|
+
|
14
19
|
results = search.results
|
15
20
|
assert_kind_of Hash, results
|
16
21
|
assert results["total"] > 0
|
17
22
|
assert_kind_of Array, results["hits"]
|
18
|
-
|
19
|
-
|
23
|
+
|
24
|
+
hits_count = DOC.select{|item| item["title"] =~ /#{query}/}.size
|
25
|
+
|
26
|
+
assert_equal hits_count, results["total"]
|
27
|
+
assert_equal max_size, results["hits"].size
|
20
28
|
end
|
21
29
|
end
|
22
30
|
end
|
data/test/test_helper.rb
CHANGED
@@ -24,6 +24,59 @@ module Test::Integration
|
|
24
24
|
URL = "http://192.168.6.35:9400"
|
25
25
|
INDEX = "articles_test"
|
26
26
|
TYPE = "type_test"
|
27
|
+
DOC = [
|
28
|
+
{"title"=>"java 是好东西",
|
29
|
+
"body"=>"hey java",
|
30
|
+
"id"=>"1",
|
31
|
+
"username"=>"jack",
|
32
|
+
"created_at"=>2007072323},
|
33
|
+
{"title"=>"this java cool",
|
34
|
+
"body"=>"hey java",
|
35
|
+
"id"=>"2",
|
36
|
+
"created_at"=>2009072323,
|
37
|
+
"username"=>"robbin"},
|
38
|
+
{"title"=>"this is java cool",
|
39
|
+
"body"=>"hey java",
|
40
|
+
"id"=>"3",
|
41
|
+
"created_at"=>2010072323,
|
42
|
+
"username"=>"www"},
|
43
|
+
{"title"=>"java is really cool",
|
44
|
+
"body"=>"hey java",
|
45
|
+
"id"=>"4",
|
46
|
+
"created_at"=>2007062323,
|
47
|
+
"username"=>"google"},
|
48
|
+
{"title"=>"this is wakak cool",
|
49
|
+
"body"=>"hey java",
|
50
|
+
"id"=>"5",
|
51
|
+
"created_at"=>2007062323,
|
52
|
+
"username"=>"jackde"},
|
53
|
+
{"title"=>"this is java cool",
|
54
|
+
"body"=>"hey java",
|
55
|
+
"id"=>"6",
|
56
|
+
"created_at"=>2007012323,
|
57
|
+
"username"=>"jackk wa"},
|
58
|
+
{"title"=>"this java really cool",
|
59
|
+
"body"=>"hey java",
|
60
|
+
"id"=>"7",
|
61
|
+
"created_at"=>2002072323,
|
62
|
+
"username"=>"william"}
|
63
|
+
]
|
64
|
+
|
65
|
+
MAPPING = {TYPE => {"_source"=>{"enabled"=>false},
|
66
|
+
"properties"=>
|
67
|
+
{"title"=>
|
68
|
+
{"type"=>"string",
|
69
|
+
"term_vector"=>"with_positions_offsets",
|
70
|
+
"boost"=>2.0},
|
71
|
+
"body"=>{"type"=>"string", "term_vector"=>"with_positions_offsets"},
|
72
|
+
"username"=>{"type"=>"string", "index"=>"not_analyzed", "store"=>"no"},
|
73
|
+
"id"=>
|
74
|
+
{"type"=>"integer", "index"=>"not_analyzed", "include_in_all"=>false},
|
75
|
+
"created_at"=>
|
76
|
+
{"type"=>"integer", "index"=>"not_analyzed", "include_in_all"=>false}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
27
80
|
|
28
81
|
def setup
|
29
82
|
Tire::Configuration.url(URL)
|
@@ -35,65 +88,13 @@ module Test::Integration
|
|
35
88
|
end
|
36
89
|
|
37
90
|
def setup_mapping
|
38
|
-
mapping = {TYPE => {"_source"=>{"enabled"=>false},
|
39
|
-
"properties"=>
|
40
|
-
{"title"=>
|
41
|
-
{"type"=>"string",
|
42
|
-
"term_vector"=>"with_positions_offsets",
|
43
|
-
"boost"=>2.0},
|
44
|
-
"body"=>{"type"=>"string", "term_vector"=>"with_positions_offsets"},
|
45
|
-
"username"=>{"type"=>"string", "index"=>"not_analyzed", "store"=>"no"},
|
46
|
-
"id"=>
|
47
|
-
{"type"=>"integer", "index"=>"not_analyzed", "include_in_all"=>false},
|
48
|
-
"created_at"=>
|
49
|
-
{"type"=>"integer", "index"=>"not_analyzed", "include_in_all"=>false}
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
91
|
setup_shard
|
54
|
-
@index.create_mapping(TYPE,
|
92
|
+
@index.create_mapping(TYPE, MAPPING)
|
55
93
|
end
|
56
94
|
|
57
95
|
def setup_bulk
|
58
|
-
doc = [
|
59
|
-
{"title"=>"java 是好东西",
|
60
|
-
"body"=>"hey java",
|
61
|
-
"id"=>"1",
|
62
|
-
"username"=>"jack",
|
63
|
-
"created_at"=>2007072323},
|
64
|
-
{"title"=>"this java cool",
|
65
|
-
"body"=>"hey java",
|
66
|
-
"id"=>"2",
|
67
|
-
"created_at"=>2009072323,
|
68
|
-
"username"=>"robbin"},
|
69
|
-
{"title"=>"this is java cool",
|
70
|
-
"body"=>"hey java",
|
71
|
-
"id"=>"3",
|
72
|
-
"created_at"=>2010072323,
|
73
|
-
"username"=>"www"},
|
74
|
-
{"title"=>"java is really cool",
|
75
|
-
"body"=>"hey java",
|
76
|
-
"id"=>"4",
|
77
|
-
"created_at"=>2007062323,
|
78
|
-
"username"=>"google"},
|
79
|
-
{"title"=>"this is wakak cool",
|
80
|
-
"body"=>"hey java",
|
81
|
-
"id"=>"5",
|
82
|
-
"created_at"=>2007062323,
|
83
|
-
"username"=>"jackde"},
|
84
|
-
{"title"=>"this is java cool",
|
85
|
-
"body"=>"hey java",
|
86
|
-
"id"=>"6",
|
87
|
-
"created_at"=>2007012323,
|
88
|
-
"username"=>"jackk wa"},
|
89
|
-
{"title"=>"this java really cool",
|
90
|
-
"body"=>"hey java",
|
91
|
-
"id"=>"7",
|
92
|
-
"created_at"=>2002072323,
|
93
|
-
"username"=>"william"}
|
94
|
-
]
|
95
96
|
setup_mapping
|
96
|
-
@index.bulk(TYPE,
|
97
|
+
@index.bulk(TYPE, DOC)
|
97
98
|
end
|
98
99
|
|
99
100
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csdn-tire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -222,6 +222,7 @@ files:
|
|
222
222
|
- examples/tire.rb
|
223
223
|
- lib/tire.rb
|
224
224
|
- lib/tire/click_log.rb
|
225
|
+
- lib/tire/cluster.rb
|
225
226
|
- lib/tire/configuration.rb
|
226
227
|
- lib/tire/count.rb
|
227
228
|
- lib/tire/dsl.rb
|
@@ -233,13 +234,12 @@ files:
|
|
233
234
|
- lib/tire/rubyext/ruby_1_8.rb
|
234
235
|
- lib/tire/rubyext/to_json.rb
|
235
236
|
- lib/tire/search.rb
|
236
|
-
- lib/tire/state.rb
|
237
237
|
- lib/tire/utils.rb
|
238
238
|
- lib/tire/version.rb
|
239
|
+
- test/integration/cluster_test.rb
|
239
240
|
- test/integration/count_test.rb
|
240
241
|
- test/integration/index_test.rb
|
241
242
|
- test/integration/search_test.rb
|
242
|
-
- test/integration/state_test.rb
|
243
243
|
- test/test_helper.rb
|
244
244
|
- test/unit/configuration_test.rb
|
245
245
|
- test/unit/http_client_test.rb
|
data/lib/tire/state.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module Tire
|
3
|
-
class State
|
4
|
-
include Utils
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def url
|
11
|
-
"#{Configuration.url}/cluster/_state"
|
12
|
-
end
|
13
|
-
|
14
|
-
def info(more = false)
|
15
|
-
desc_url = more ? "#{url}?more=true" : "#{url}?more=false"
|
16
|
-
@response = Configuration.client.get(desc_url)
|
17
|
-
if @response.success?
|
18
|
-
MultiJson.decode(@response.body)
|
19
|
-
else
|
20
|
-
[]
|
21
|
-
end
|
22
|
-
ensure
|
23
|
-
curl = %Q|curl -X GET #{desc_url}|
|
24
|
-
logged('CLUSTER_STATE', curl)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
require 'test_helper'
|
3
|
-
|
4
|
-
module Tire
|
5
|
-
|
6
|
-
class StateIntegrationTest < Test::Unit::TestCase
|
7
|
-
include Test::Integration
|
8
|
-
|
9
|
-
context "state" do
|
10
|
-
should "get short state" do
|
11
|
-
assert_kind_of Array, Tire.state.info
|
12
|
-
assert_kind_of Hash, Tire.state.info.first
|
13
|
-
end
|
14
|
-
|
15
|
-
should "get more state" do
|
16
|
-
assert_kind_of Array, Tire.state.info(true)
|
17
|
-
assert_kind_of Hash, Tire.state.info(true).first
|
18
|
-
assert_not_nil Tire.state.info(true).first["blog"]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|