mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 10:42:38 +00:00
feat: Separate indexing with the search feature (#12503)
With this change, the indexing would be separate from the search, so you
need to enable indexing on the cloud and run it. It should start
indexing the messages to ElasticSearch/OpenSearch. Once indexing is
completed, we can turn on the feature for the customer.
Make sure that the following is done when you deploy.
Set POSTGRES_STATEMENT_TIMEOUT=600s before you run the indexing.
1. Make sure that the account with advanced_search has
advanced_search_indexing enabled
```rb
Account.feature_advanced_search.each do |account|
account.enable_features(:advanced_search_indexing)
account.save!
end
```
2. Enable indexing for all accounts with paid subscription.
```rb
Account.where("custom_attributes ->> 'plan_name' IN (?)", ['Enterprise', 'Startups', 'Business']).each do |account|
account.enable_features(:advanced_search_indexing)
account.save!
end
```
3. Run indexing for all the messages.
```rb
Message.reindex
```
Co-authored-by: Vishnu Narayanan <iamwishnu@gmail.com>
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
This commit is contained in:
@@ -244,8 +244,16 @@ class Message < ApplicationRecord
|
||||
|
||||
def should_index?
|
||||
return false unless ChatwootApp.advanced_search_allowed?
|
||||
return false unless account.feature_enabled?('advanced_search')
|
||||
return false unless incoming? || outgoing?
|
||||
# For Chatwoot Cloud:
|
||||
# - Enable indexing only if the account is paid.
|
||||
# - The `advanced_search_indexing` feature flag is used only in the cloud.
|
||||
#
|
||||
# For Self-hosted:
|
||||
# - Adding an extra feature flag here would cause confusion.
|
||||
# - If the user has configured Elasticsearch, enabling `advanced_search`
|
||||
# should automatically work without any additional flags.
|
||||
return false if ChatwootApp.chatwoot_cloud? && !account.feature_enabled?('advanced_search_indexing')
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
@@ -209,3 +209,8 @@
|
||||
display_name: SAML
|
||||
enabled: false
|
||||
premium: true
|
||||
- name: advanced_search_indexing
|
||||
display_name: Advanced Search Indexing
|
||||
enabled: false
|
||||
premium: true
|
||||
chatwoot_internal: true
|
||||
|
||||
@@ -15,6 +15,7 @@ class Enterprise::Billing::HandleStripeEventService
|
||||
channel_email
|
||||
channel_instagram
|
||||
captain_integration
|
||||
advanced_search_indexing
|
||||
].freeze
|
||||
|
||||
# Additional features available starting with the Business plan
|
||||
|
||||
@@ -621,7 +621,7 @@ RSpec.describe Message do
|
||||
|
||||
before do
|
||||
allow(ChatwootApp).to receive(:advanced_search_allowed?).and_return(true)
|
||||
account.enable_features('advanced_search')
|
||||
account.enable_features('advanced_search_indexing')
|
||||
end
|
||||
|
||||
context 'when advanced search is not allowed globally' do
|
||||
@@ -634,9 +634,10 @@ RSpec.describe Message do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when advanced search feature is not enabled for account' do
|
||||
context 'when advanced search feature is not enabled for account on chatwoot cloud' do
|
||||
before do
|
||||
account.disable_features('advanced_search')
|
||||
allow(ChatwootApp).to receive(:chatwoot_cloud?).and_return(true)
|
||||
account.disable_features('advanced_search_indexing')
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
@@ -644,6 +645,17 @@ RSpec.describe Message do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when advanced search feature is not enabled for account on self-hosted' do
|
||||
before do
|
||||
allow(ChatwootApp).to receive(:chatwoot_cloud?).and_return(false)
|
||||
account.disable_features('advanced_search_indexing')
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(message.should_index?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when message type is not incoming or outgoing' do
|
||||
before do
|
||||
message.message_type = 'activity'
|
||||
|
||||
Reference in New Issue
Block a user