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? | ||||
| 
 | ||||
|     @search_results ||= begin | ||||
|       if Chewy.enabled? | ||||
|         from_elasticsearch | ||||
|       else | ||||
|         from_database | ||||
|       end | ||||
|       results = from_elasticsearch if Chewy.enabled? | ||||
|       results ||= from_database | ||||
|       results | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | @ -92,6 +90,8 @@ class AccountSearchService < BaseService | |||
|     ActiveRecord::Associations::Preloader.new.preload(records, :account_stat) | ||||
| 
 | ||||
|     records | ||||
|   rescue Faraday::ConnectionFailed, Parslet::ParseFailed | ||||
|     nil | ||||
|   end | ||||
| 
 | ||||
|   def reputation_score_function | ||||
|  |  | |||
|  | @ -6,11 +6,10 @@ class TagSearchService < BaseService | |||
|     @offset = options[:offset].to_i | ||||
|     @limit  = options[:limit].to_i | ||||
| 
 | ||||
|     if Chewy.enabled? | ||||
|       from_elasticsearch | ||||
|     else | ||||
|       from_database | ||||
|     end | ||||
|     results = from_elasticsearch if Chewy.enabled? | ||||
|     results ||= from_database | ||||
| 
 | ||||
|     results | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
|  | @ -74,6 +73,8 @@ class TagSearchService < BaseService | |||
|     } | ||||
| 
 | ||||
|     TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact | ||||
|   rescue Faraday::ConnectionFailed, Parslet::ParseFailed | ||||
|     nil | ||||
|   end | ||||
| 
 | ||||
|   def from_database | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue