2018-02-10 09:04:47 +11:00
|
|
|
enabled = ENV['ES_ENABLED'] == 'true'
|
|
|
|
host = ENV.fetch('ES_HOST') { 'localhost' }
|
|
|
|
port = ENV.fetch('ES_PORT') { 9200 }
|
|
|
|
fallback_prefix = ENV.fetch('REDIS_NAMESPACE') { nil }
|
|
|
|
prefix = ENV.fetch('ES_PREFIX') { fallback_prefix }
|
|
|
|
|
|
|
|
Chewy.settings = {
|
|
|
|
host: "#{host}:#{port}",
|
|
|
|
prefix: prefix,
|
|
|
|
enabled: enabled,
|
|
|
|
journal: false,
|
2018-02-21 03:25:16 +11:00
|
|
|
sidekiq: { queue: 'pull' },
|
2018-02-10 09:04:47 +11:00
|
|
|
}
|
|
|
|
|
2019-10-01 09:19:11 +10:00
|
|
|
Chewy.root_strategy = :custom_sidekiq
|
|
|
|
Chewy.request_strategy = :custom_sidekiq
|
|
|
|
Chewy.use_after_commit_callbacks = false
|
2018-02-10 09:04:47 +11:00
|
|
|
|
|
|
|
module Chewy
|
|
|
|
class << self
|
|
|
|
def enabled?
|
|
|
|
settings[:enabled]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2020-04-17 23:14:24 +10:00
|
|
|
|
|
|
|
# ElasticSearch uses Faraday internally. Faraday interprets the
|
|
|
|
# http_proxy env variable by default which leads to issues when
|
|
|
|
# Mastodon is run with hidden services enabled, because
|
|
|
|
# ElasticSearch is *not* supposed to be accessed through a proxy
|
|
|
|
Faraday.ignore_env_proxy = true
|
2020-05-23 13:48:14 +10:00
|
|
|
|
|
|
|
# Elasticsearch 7.x workaround
|
|
|
|
Elasticsearch::Transport::Client.prepend Module.new {
|
|
|
|
def search(arguments = {})
|
|
|
|
arguments[:rest_total_hits_as_int] = true
|
|
|
|
super arguments
|
|
|
|
end
|
|
|
|
}
|
|
|
|
Elasticsearch::API::Indices::IndicesClient.prepend Module.new {
|
|
|
|
def create(arguments = {})
|
|
|
|
arguments[:include_type_name] = true
|
|
|
|
super arguments
|
|
|
|
end
|
|
|
|
|
|
|
|
def put_mapping(arguments = {})
|
|
|
|
arguments[:include_type_name] = true
|
|
|
|
super arguments
|
|
|
|
end
|
|
|
|
}
|