mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-29 02:02:27 +00:00
- scripts to throttle reindex job creation and monitor progress ``` RAILS_ENV=production POSTGRES_STATEMENT_TIMEOUT=6000s bundle exec rails runner script/bulk_reindex_messages.rb RAILS_ENV=production bundle exec rails runner script/monitor_reindex.rb ``` --------- Co-authored-by: Pranav <pranavrajs@gmail.com>
59 lines
1.7 KiB
Ruby
59 lines
1.7 KiB
Ruby
# Reindex messages for a single account
|
|
# Usage: bundle exec rails runner script/reindex_single_account.rb ACCOUNT_ID [DAYS_BACK]
|
|
|
|
#account_id = ARGV[0]&.to_i
|
|
days_back = (ARGV[1] || 30).to_i
|
|
|
|
# if account_id.nil? || account_id.zero?
|
|
# puts "Usage: bundle exec rails runner script/reindex_single_account.rb ACCOUNT_ID [DAYS_BACK]"
|
|
# puts "Example: bundle exec rails runner script/reindex_single_account.rb 93293 30"
|
|
# exit 1
|
|
# end
|
|
|
|
# account = Account.find(account_id)
|
|
# puts "=" * 80
|
|
# puts "Reindexing messages for: #{account.name} (ID: #{account.id})"
|
|
# puts "=" * 80
|
|
|
|
# Enable feature if not already enabled
|
|
# unless account.feature_enabled?('advanced_search_indexing')
|
|
# puts "Enabling advanced_search_indexing feature..."
|
|
# account.enable_features(:advanced_search_indexing)
|
|
# account.save!
|
|
# end
|
|
|
|
# Get messages to index
|
|
# messages = Message.where(account_id: account.id)
|
|
# .where(message_type: [0, 1]) # incoming/outgoing only
|
|
# .where('created_at >= ?', days_back.days.ago)
|
|
|
|
messages = Message.where('created_at >= ?', days_back.days.ago)
|
|
|
|
puts "Found #{messages.count} messages to index (last #{days_back} days)"
|
|
puts ''
|
|
|
|
sleep(15)
|
|
|
|
# Create bulk reindex jobs
|
|
index_name = Message.searchkick_index.name
|
|
batch_count = 0
|
|
|
|
messages.find_in_batches(batch_size: 1000).with_index do |batch, index|
|
|
Searchkick::BulkReindexJob.set(queue: :bulk_reindex_low).perform_later(
|
|
class_name: 'Message',
|
|
index_name: index_name,
|
|
batch_id: index,
|
|
record_ids: batch.map(&:id)
|
|
)
|
|
|
|
batch_count += 1
|
|
print '.'
|
|
sleep(0.5) # Small delay
|
|
end
|
|
|
|
puts ''
|
|
puts '=' * 80
|
|
puts "Done! Created #{batch_count} bulk reindex jobs"
|
|
puts 'Messages will be indexed shortly via the bulk_reindex_low queue'
|
|
puts '=' * 80
|
|
|