Fix search error when ElasticSearch is enabled but not available (#11954)
* Fallback to Database search when ES not available * Prevent double work if ES gives 0 result * Apply suggestion from code review
This commit is contained in:
		
							parent
							
								
									5034418e2c
								
							
						
					
					
						commit
						00d7bdcc2a
					
				|  | @ -42,11 +42,9 @@ class AccountSearchService < BaseService | ||||||
|     return [] if limit_for_non_exact_results.zero? |     return [] if limit_for_non_exact_results.zero? | ||||||
| 
 | 
 | ||||||
|     @search_results ||= begin |     @search_results ||= begin | ||||||
|       if Chewy.enabled? |       results = from_elasticsearch if Chewy.enabled? | ||||||
|         from_elasticsearch |       results ||= from_database | ||||||
|       else |       results | ||||||
|         from_database |  | ||||||
|       end |  | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | @ -92,6 +90,8 @@ class AccountSearchService < BaseService | ||||||
|     ActiveRecord::Associations::Preloader.new.preload(records, :account_stat) |     ActiveRecord::Associations::Preloader.new.preload(records, :account_stat) | ||||||
| 
 | 
 | ||||||
|     records |     records | ||||||
|  |   rescue Faraday::ConnectionFailed, Parslet::ParseFailed | ||||||
|  |     nil | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def reputation_score_function |   def reputation_score_function | ||||||
|  |  | ||||||
|  | @ -6,11 +6,10 @@ class TagSearchService < BaseService | ||||||
|     @offset = options[:offset].to_i |     @offset = options[:offset].to_i | ||||||
|     @limit  = options[:limit].to_i |     @limit  = options[:limit].to_i | ||||||
| 
 | 
 | ||||||
|     if Chewy.enabled? |     results = from_elasticsearch if Chewy.enabled? | ||||||
|       from_elasticsearch |     results ||= from_database | ||||||
|     else | 
 | ||||||
|       from_database |     results | ||||||
|     end |  | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   private |   private | ||||||
|  | @ -74,6 +73,8 @@ class TagSearchService < BaseService | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact |     TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact | ||||||
|  |   rescue Faraday::ConnectionFailed, Parslet::ParseFailed | ||||||
|  |     nil | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def from_database |   def from_database | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue