diff --git a/Gemfile b/Gemfile index cfcb968b1c9b7c34a1f224931644c280ebe7a814..e5e60aa5254284f3cf381721504cd78ab1e1d225 100644 --- a/Gemfile +++ b/Gemfile @@ -134,7 +134,7 @@ gem 'gitlab' gem 'pundit' # elasticsearch integration -gem 'searchkick', '~> 1.3.6' +gem 'searchkick' # enable/disable features by enviroments gem 'feature' diff --git a/Gemfile.lock b/Gemfile.lock index f97d5f9128b3660afd5c71726d93f55fab402077..173c4cd951d54bccc257cfe0eb887dc348f045c8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -44,7 +44,7 @@ GEM erubis (~> 2.7.0) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - active_model_serializers (0.10.5) + active_model_serializers (0.10.6) actionpack (>= 4.1, < 6) activemodel (>= 4.1, < 6) case_transform (>= 0.2) @@ -58,14 +58,14 @@ GEM activemodel (= 5.0.0.1) activesupport (= 5.0.0.1) arel (~> 7.0) - activerecord-import (0.17.2) + activerecord-import (0.18.2) activerecord (>= 3.2) activesupport (5.0.0.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) - acts_as_list (0.9.4) + acts_as_list (0.9.5) activerecord (>= 3.0) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) @@ -124,8 +124,8 @@ GEM dm-validations (~> 1.2.0) data_objects (0.10.17) addressable (~> 2.1) - database_cleaner (1.5.3) - dawnscanner (1.6.7) + database_cleaner (1.6.1) + dawnscanner (1.6.8) cvss data_mapper dm-sqlite-adapter @@ -137,7 +137,7 @@ GEM sqlite3 sys-uname terminal-table - debug_inspector (0.0.2) + debug_inspector (0.0.3) derailed_benchmarks (1.3.2) benchmark-ips (~> 2) get_process_mem (~> 0) @@ -194,12 +194,12 @@ GEM dm-core (~> 1.2.0) do_sqlite3 (0.10.17) data_objects (= 0.10.17) - elasticsearch (5.0.3) - elasticsearch-api (= 5.0.3) - elasticsearch-transport (= 5.0.3) - elasticsearch-api (5.0.3) + elasticsearch (5.0.4) + elasticsearch-api (= 5.0.4) + elasticsearch-transport (= 5.0.4) + elasticsearch-api (5.0.4) multi_json - elasticsearch-transport (5.0.3) + elasticsearch-transport (5.0.4) faraday multi_json equalizer (0.0.11) @@ -218,7 +218,7 @@ GEM feature (1.4.0) ffi (1.9.18) flamegraph (0.9.5) - flay (2.8.1) + flay (2.9.0) erubis (~> 2.7.0) path_expander (~> 1.0) ruby_parser (~> 3.0) @@ -228,17 +228,17 @@ GEM ruby_parser (~> 3.1, > 3.1.0) sexp_processor (~> 4.8) get_process_mem (0.2.1) - gitlab (3.7.0) - httparty (~> 0.13.0) - terminal-table - globalid (0.3.7) - activesupport (>= 4.1.0) - haml (4.0.7) + gitlab (4.0.0) + httparty + terminal-table (= 1.7.1) + globalid (0.4.0) + activesupport (>= 4.2.0) + haml (5.0.1) + temple (>= 0.8.0) tilt hashie (3.5.5) heapy (0.1.2) - httparty (0.13.7) - json (~> 1.8) + httparty (0.14.0) multi_xml (>= 0.5.2) i18n (0.8.1) ice_nine (0.11.2) @@ -255,7 +255,7 @@ GEM logger-colors (1.0.0) loofah (2.0.3) nokogiri (>= 1.5.9) - mail (2.6.4) + mail (2.6.5) mime-types (>= 1.16, < 4) memory_profiler (0.9.8) method_source (0.8.2) @@ -267,7 +267,7 @@ GEM open4 (~> 1.3.4) rake mini_portile2 (2.1.0) - minitest (5.10.1) + minitest (5.10.2) minitest-reporters (1.1.14) ansi builder @@ -277,9 +277,10 @@ GEM multi_xml (0.6.0) multipart-post (2.0.0) mustache (1.0.5) + mustermann (1.0.0) net-http-persistent (2.9.4) nio4r (1.2.1) - nokogiri (1.7.1) + nokogiri (1.7.2) mini_portile2 (~> 2.1.0) oauth (0.5.1) oauth2 (1.3.1) @@ -309,7 +310,7 @@ GEM rack open4 (1.3.4) orm_adapter (0.5.0) - paper_trail (6.0.2) + paper_trail (7.0.2) activerecord (>= 4.0, < 5.2) request_store (~> 1.1) paperclip (5.1.0) @@ -320,7 +321,7 @@ GEM mimemagic (~> 0.3.0) parser (2.4.0.0) ast (~> 2.2) - path_expander (1.0.1) + path_expander (1.0.2) pg (0.20.0) phantomjs (2.1.1.0) powerpack (0.1.1) @@ -334,13 +335,13 @@ GEM puma (3.8.2) pundit (1.1.0) activesupport (>= 3.0.0) - rack (2.0.1) + rack (2.0.2) rack-attack (5.0.1) rack rack-cors (0.4.1) rack-mini-profiler (0.10.2) rack (>= 1.2.0) - rack-protection (1.5.3) + rack-protection (2.0.0) rack rack-test (0.6.3) rack (>= 1.0) @@ -372,46 +373,48 @@ GEM method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.2.1) + rainbow (2.2.2) + rake rake (11.3.0) rdoc (4.3.0) redis (3.3.3) - reek (4.5.6) + reek (4.6.2) codeclimate-engine-rb (~> 0.4.0) - parser (>= 2.3.1.2, < 2.5) + parser (>= 2.4.0.0, < 2.5) rainbow (~> 2.0) request_store (1.3.2) resource_kit (0.1.6) addressable (>= 2.3.6, < 3.0.0) - responders (2.3.0) - railties (>= 4.2.0, < 5.1) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) rmagick (2.16.0) - rspec (3.5.0) - rspec-core (~> 3.5.0) - rspec-expectations (~> 3.5.0) - rspec-mocks (~> 3.5.0) - rspec-core (3.5.4) - rspec-support (~> 3.5.0) - rspec-expectations (3.5.0) + rspec (3.6.0) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) + rspec-core (3.6.0) + rspec-support (~> 3.6.0) + rspec-expectations (3.6.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.5.0) - rspec-mocks (3.5.0) + rspec-support (~> 3.6.0) + rspec-mocks (3.6.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.5.0) - rspec-rails (3.5.2) + rspec-support (~> 3.6.0) + rspec-rails (3.6.0) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 3.5.0) - rspec-expectations (~> 3.5.0) - rspec-mocks (~> 3.5.0) - rspec-support (~> 3.5.0) - rspec-support (3.5.0) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) + rspec-support (~> 3.6.0) + rspec-support (3.6.0) rspec_api_documentation (4.9.0) activesupport (>= 3.0.0) mustache (~> 1.0, >= 0.99.4) rspec (~> 3.0) - rubocop (0.48.0) + rubocop (0.48.1) parser (>= 2.3.3.1, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) @@ -419,7 +422,7 @@ GEM unicode-display_width (~> 1.0, >= 1.0.1) ruby-graphviz (1.2.3) ruby-progressbar (1.8.1) - ruby_parser (3.8.4) + ruby_parser (3.9.0) sexp_processor (~> 4.1) rubycritic (3.2.0) flay (~> 2.8) @@ -436,26 +439,29 @@ GEM sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - searchkick (1.3.6) - activemodel + searchkick (2.3.0) + activemodel (>= 4.1) elasticsearch (>= 1) hashie - sexp_processor (4.8.0) + sexp_processor (4.9.0) shoulda (3.5.0) shoulda-context (~> 1.0, >= 1.0.1) shoulda-matchers (>= 1.4.1, < 3.0) shoulda-context (1.2.2) shoulda-matchers (2.8.0) activesupport (>= 3.0.0) - sidekiq (4.2.10) + sidekiq (5.0.0) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) rack-protection (>= 1.5.0) - redis (~> 3.2, >= 3.2.1) - sinatra (1.0) - rack (>= 1.0) - slim (3.0.7) - temple (~> 0.7.6) + redis (~> 3.3, >= 3.3.3) + sinatra (2.0.0) + mustermann (~> 1.0) + rack (~> 2.0) + rack-protection (= 2.0.0) + tilt (~> 2.0) + slim (3.0.8) + temple (>= 0.7.6, < 0.9) tilt (>= 1.3.3, < 2.1) spring (2.0.1) activesupport (>= 4.2) @@ -472,8 +478,8 @@ GEM stringex (1.5.1) sys-uname (1.0.3) ffi (>= 1.0.0) - temple (0.7.7) - terminal-table (1.7.3) + temple (0.8.0) + terminal-table (1.7.1) unicode-display_width (~> 1.1.1) thor (0.19.4) thread_safe (0.3.6) @@ -559,7 +565,7 @@ DEPENDENCIES rubyzip screencap sdoc (~> 0.4.0) - searchkick (~> 1.3.6) + searchkick shoulda sidekiq sinatra diff --git a/app/services/search_service/collection.rb b/app/services/search_service/collection.rb index 5bd29469709d51634c3d8489b27f653afed1edd1..4bf4e400a3d5126fb3215aa46c1fdf4e735ade66 100644 --- a/app/services/search_service/collection.rb +++ b/app/services/search_service/collection.rb @@ -1,7 +1,7 @@ module SearchService class Collection < Model def search - ::Collection.search(query: mount_query, order: order_hash, page: @search.page, per_page: @search.results_per_page) + ::Collection.search(body: mount_query, order: order_hash, page: @search.page, per_page: @search.results_per_page) end def autocomplete diff --git a/app/services/search_service/learning_object.rb b/app/services/search_service/learning_object.rb index bff63f89f5d272e4c242eab493cea34bac8e619f..fbd32481d70ccacfc15170ff719e4e5add395ac0 100644 --- a/app/services/search_service/learning_object.rb +++ b/app/services/search_service/learning_object.rb @@ -2,7 +2,7 @@ module SearchService class LearningObject < Model def search fields = [:license, :tags, :subjects, :educational_stages, :taggings, :publisher, :language, :attachments, :reviews] - ::LearningObject.search(query: mount_query, includes: fields, order: order_hash, page: @search.page, per_page: @search.results_per_page) + ::LearningObject.search(body: mount_query, includes: fields, order: order_hash, page: @search.page, per_page: @search.results_per_page) end def autocomplete diff --git a/app/services/search_service/model.rb b/app/services/search_service/model.rb index d37c3fc8909628ef068b3ff8f1ecf7bb3f54f1c7..6c93c75928b50a86b00a2228a50c8363faaf17cf 100644 --- a/app/services/search_service/model.rb +++ b/app/services/search_service/model.rb @@ -38,24 +38,28 @@ module SearchService def mount_query match_all_query = { - bool: { - must: { - match_all: {} - }, - filter: mount_filter + query: { + bool: { + must: { + match_all: {} + }, + filter: mount_filter + } } } return match_all_query if @search.query == '*' - { - function_score: { - query: { bool: { - must: { dis_max: { queries: mount_queries } }, - filter: mount_filter - } }, - functions: [{ script_score: { script: { lang: 'groovy', file: 'calculate_score' } } }] + { + query:{ + function_score: { + query: { bool: { + must: { dis_max: { queries: mount_queries } }, + filter: mount_filter + } }, + functions: [{ script_score: { script: { lang: 'groovy', file: 'calculate_score' } } }] + } } - } + } end def mount_queries diff --git a/app/services/search_service/user.rb b/app/services/search_service/user.rb index c9afd7790f52d404f93c74aa426155a4d24bcc0a..ea8ef836da2db171ffc9327f8afe79f82bc8acde 100644 --- a/app/services/search_service/user.rb +++ b/app/services/search_service/user.rb @@ -1,7 +1,7 @@ module SearchService class User < Model def search - ::User.search(query: mount_query, order: order_hash, page: @search.page, per_page: @search.results_per_page) + ::User.search(body: mount_query, order: order_hash, page: @search.page, per_page: @search.results_per_page) end def autocomplete diff --git a/config/initializers/elasticsearch.rb b/config/initializers/elasticsearch.rb new file mode 100644 index 0000000000000000000000000000000000000000..e591a06b27196300668419e7f35019e6aef8f257 --- /dev/null +++ b/config/initializers/elasticsearch.rb @@ -0,0 +1,6 @@ +Searchkick.client = + Elasticsearch::Client.new( + url: 'localhost:9200', + transport_options: {request: {timeout: 550}} + ) +