elastico 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- elastico (0.0.4)
4
+ elastico (0.0.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Elastico is a __simple__ layer that enables you to use elasticsearch __full__ API. The elasticsearch team created this [great API](http://www.elasticsearch.org/guide/) which enables you to do almost anything todays search engines allow you to do.
4
4
 
5
- __Simple__. Elastico is built in a way so your configuration and usage is as simple and streat forward as possible.
5
+ __Simple__. Elastico is built in a way so your configuration and usage is as simple and straightforward as possible.
6
6
 
7
7
  __Full__. Elastico is built to be transparent, non-blocking, non-opinionated layer between your code to elasticsearch API. Meaning Elastico won't force anything about how to index your active records models, neither how to search it.
8
8
 
@@ -21,6 +21,14 @@ In general, in order to be able to use elasticsearch search capabilities you sho
21
21
 
22
22
  ## Installation
23
23
 
24
+ Install elasticsearch:
25
+
26
+ cd ~
27
+ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.tar.gz .
28
+ tar -zxvf elasticsearch-0.90.5.tar.gz /bin/
29
+ rm elasticsearch-0.90.5.tar.gz
30
+ /bin/elasticsearch-0.90.5/bin/elasticsearch -f
31
+
24
32
  Add this line to your application's Gemfile:
25
33
 
26
34
  gem 'elastico'
@@ -37,21 +45,19 @@ Or install it yourself as:
37
45
 
38
46
  In your model:
39
47
 
40
- class Apple < ActiveRecord::Base
41
-
42
- def self.prepare_elastico_settings_and_mappings_json
43
- json = { "apple" => {
44
- "properties" => {
45
- "name" => {"type" => "string"},
46
- "color" => {"type" => "string"}
47
- }
48
- }}.to_json
48
+ class Apple < ActiveRecord::Base
49
+ include Elastico
50
+ attr_accessible :color, :name
51
+
52
+ def self.prepare_elastico_settings_and_mappings_json
53
+ json = { "apple" => {
54
+ "properties" => {
55
+ "name" => {"type" => "string"},
56
+ "color" => {"type" => "string"}
57
+ }
58
+ }}.to_json
59
+ end
49
60
  end
50
- include Elastico
51
-
52
- attr_accessible :color, :name
53
-
54
- end
55
61
 
56
62
 
57
63
  In your controller:
@@ -80,7 +86,7 @@ In your controller:
80
86
 
81
87
  Learn by Example
82
88
  ================
83
- Fork the example app that shows how to use Elastico [here](https://github.com/gneyal/ElasticoExample).
89
+ Fork/Clone the example app that shows how to use Elastico [here](https://github.com/gneyal/ElasticoExample).
84
90
 
85
91
 
86
92
  Configure it
@@ -102,9 +108,11 @@ __Optional__
102
108
 
103
109
  3. Set up Apple.elastico\_type\_name (optional - defaults to your class name; here it will be Apple).
104
110
 
111
+ 4. Run Apple.elastico_import_all to import all your data.
112
+
105
113
  Use it.
106
114
  -------
107
- 1. After every save Elastico will automatically save you instance in elasticsearch.
115
+ 1. After every save Elastico will automatically save your instance in elasticsearch.
108
116
 
109
117
  2. Import current database instances by creating a rake task to "save" them all.
110
118
 
@@ -3,7 +3,8 @@ module Elastico
3
3
  def self.included(base)
4
4
  update_conditions = lambda { update_index_with_instance_elastico }
5
5
  destroy_instance = lambda { destroy_instance_in_elastic_search }
6
- base.send :after_save, update_conditions
6
+
7
+ base.send :after_save, update_conditions
7
8
  base.send :after_destroy, destroy_instance
8
9
  base.send :after_touch, update_conditions
9
10
 
@@ -13,8 +13,6 @@ module Elastico
13
13
  end
14
14
 
15
15
  def general_request(content=nil, url=self.elastico_url, options = { :hash_respond_wanted => :true })
16
-
17
- logger.info("========== in post ")
18
16
  RestClient.post(url, content, :content_type => :json, :accept => :json) do |response, request, result|
19
17
  ret = JSON.pretty_generate(JSON.parse(response.to_str))
20
18
  options[:hash_respond_wanted] ? JSON.parse(ret) : ret
@@ -0,0 +1,11 @@
1
+ module Elastico
2
+ module Import
3
+ def elastico_import_all
4
+ self.find_each do |instance|
5
+ result = instance.update_index_with_instance_elastico
6
+ logger.info result
7
+ end
8
+ puts "Index for #{self.name} has finished. Errors regarding specific instances have been logged."
9
+ end
10
+ end
11
+ end
@@ -26,6 +26,11 @@ module Elastico
26
26
 
27
27
  def elastico_type_name= type_name
28
28
  @type_name = type_name
29
- end
29
+ end
30
+
31
+ # This method should be over written in the model that includes elastico
32
+ def prepare_elastico_settings_and_mappings_json
33
+ nil
34
+ end
30
35
  end
31
36
  end
@@ -1,3 +1,3 @@
1
1
  module Elastico
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/elastico.rb CHANGED
@@ -4,7 +4,7 @@ require_relative "./elastico/callbacks"
4
4
  require_relative "./elastico/index"
5
5
  require_relative "./elastico/search"
6
6
  require_relative "./elastico/client"
7
-
7
+ require_relative "./elastico/import"
8
8
 
9
9
  module Elastico
10
10
  def self.included(base)
@@ -12,6 +12,7 @@ module Elastico
12
12
  base.extend Index
13
13
  base.extend Search
14
14
  base.extend Client
15
+ base.extend Import
15
16
 
16
17
  base.send :include_callbacks
17
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastico
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -77,6 +77,7 @@ files:
77
77
  - lib/elastico/callbacks.rb
78
78
  - lib/elastico/client.rb
79
79
  - lib/elastico/configuration.rb
80
+ - lib/elastico/import.rb
80
81
  - lib/elastico/index.rb
81
82
  - lib/elastico/search.rb
82
83
  - lib/elastico/version.rb