JSON parse error with Elasticsearch and faraday
I'm trying to use httpx gem as my http client for elasticsearch-transport in rails app (only supports faraday clients)
Initialisation goes as such:
require "httpx/adapters/faraday"
transport_options = {request: { timeout: 60 }} # faraday request timeout, in seconds
host = ENV['ELASTICSEARCH_URL'] ? ENV['ELASTICSEARCH_URL'] : "localhost"
port = ENV['ELASTICSEARCH_PORT'] ? ENV['ELASTICSEARCH_PORT'] : 9200
client = Elasticsearch::Client.new transport_options: transport_options, host: host, port: port, retry_on_failure: true do |f|
f.use Faraday::Request::Multipart
f.use Faraday::Request::UrlEncoded
f.use Faraday::Response::RaiseError
f.adapter :httpx
end
But when trying to index data using the client, I get following error:
> MultiJson::ParseError: compile error
from /Users/pavuorio/.rvm/gems/ruby-2.5.5/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:20:in `load'
Caused by MultiJson::Adapters::Oj::ParseError: compile error
from
0: /Users/pavuorio/.rvm/gems/ruby-2.5.5/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:20:in `load'
1: /Users/pavuorio/.rvm/gems/ruby-2.5.5/gems/multi_json-1.13.1/lib/multi_json.rb:122:in `load'
2: /Users/pavuorio/.rvm/gems/ruby-2.5.5/gems/elasticsearch-transport-7.3.0/lib/elasticsearch/transport/transport/serializer/multi_json.rb:28:in `load'
3: /Users/pavuorio/.rvm/gems/ruby-2.5.5/gems/elasticsearch-transport-7.3.0/lib/elasticsearch/transport/transport/base.rb:330:in `perform_request'
4: /Users/pavuorio/.rvm/gems/ruby-2.5.5/gems/elasticsearch-transport-7.3.0/lib/elasticsearch/transport/transport/http/faraday.rb:24:in `perform_request'
This does not happen with other adapters I have tried.
Any possible workarounds?
PS. thanks for this great gem!
Edited by Pasi Vuorio