You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

  1. enabled = ENV['ES_ENABLED'] == 'true'
  2. host = ENV.fetch('ES_HOST') { 'localhost' }
  3. port = ENV.fetch('ES_PORT') { 9200 }
  4. fallback_prefix = ENV.fetch('REDIS_NAMESPACE') { nil }
  5. prefix = ENV.fetch('ES_PREFIX') { fallback_prefix }
  6. Chewy.settings = {
  7. host: "#{host}:#{port}",
  8. prefix: prefix,
  9. enabled: enabled,
  10. journal: false,
  11. sidekiq: { queue: 'pull' },
  12. }
  13. Chewy.root_strategy = :custom_sidekiq
  14. Chewy.request_strategy = :custom_sidekiq
  15. Chewy.use_after_commit_callbacks = false
  16. module Chewy
  17. class << self
  18. def enabled?
  19. settings[:enabled]
  20. end
  21. end
  22. end
  23. # ElasticSearch uses Faraday internally. Faraday interprets the
  24. # http_proxy env variable by default which leads to issues when
  25. # Mastodon is run with hidden services enabled, because
  26. # ElasticSearch is *not* supposed to be accessed through a proxy
  27. Faraday.ignore_env_proxy = true
  28. # Elasticsearch 7.x workaround
  29. Elasticsearch::Transport::Client.prepend Module.new {
  30. def search(arguments = {})
  31. arguments[:rest_total_hits_as_int] = true
  32. super arguments
  33. end
  34. }
  35. Elasticsearch::API::Indices::IndicesClient.prepend Module.new {
  36. def create(arguments = {})
  37. arguments[:include_type_name] = true
  38. super arguments
  39. end
  40. def put_mapping(arguments = {})
  41. arguments[:include_type_name] = true
  42. super arguments
  43. end
  44. }