Algolia 搜索 - 无法在本地重建索引
Algolia search - Unable to reindex locally
我是第一次使用 Algolia 并尝试在本地重新编制索引,但它抛出了以下错误:
Algolia::AlgoliaError: API not initialized
2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: {"class":"Search::SomeWorker","args":[2,false],"retry":5,"queue":"default","jid":"1519b78812e13d6df5fdb6a9","created_at":1475216280.067702,"enqueued_at":1475216280.067759,**"error_message":"API not initialized","error_class":"Algolia::AlgoliaError"**,"failed_at":1475216280.0707068,"retry_count":0}
**2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: Algolia::AlgoliaError: API not initialized**
2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: /Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-1.11.0/lib/algolia/client.rb:657:in `client'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-1.11.0/lib/algolia/index.rb:11:in `initialize'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:229:in `new'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:229:in `initialize'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:647:in `new'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:647:in `algolia_ensure_init'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:492:in `block in algolia_index!'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:489:in `each'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:489:in `algolia_index!'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:792:in `algolia_index!'
我连接到 Algolia 客户端没有问题,如下所示:
[1] pry(main)> Algolia::Client.new(application_id: xxx, api_key: xxx)
=> #<Algolia::Client:0x007fe100329f40
@api_key="xxx",
@application_id="xxx",
@batch_timeout=120,
@connect_timeout=2,
@headers=
{"X-Algolia-API-Key"=>"xxx",
"X-Algolia-Application-Id"=>"xxx",
"Content-Type"=>"application/json; charset=utf-8",
"User-Agent"=>"Algolia for Ruby 1.11.0"},
@hosts=["xxx.algolia.net", "xxx-1.algolianet.com", "xxx-3.algolianet.com", "xxx-2.algolianet.com"],
@receive_timeout=30,
@search_hosts=["xxx-dsn.algolia.net", "xxx-2.algolianet.com", "xxx-1.algolianet.com", "xxx-3.algolianet.com"],
@search_timeout=5,
@send_timeout=30,
@ssl=true,
@ssl_version=nil>
任何帮助都会很棒。
这可能是因为您 mixing up the 2 ways 使用基础 Ruby API 客户端。有两种方法可以使用 Algolia Ruby API 客户端:
- 使用单例设计模式(1 个全局 API 客户端);
- 或使用常规的 N 个客户端实例。
看起来你正在尝试使用 Rails 集成,假设你已经在全局初始化了底层 API 客户端(使用单例设计模式)。
使用 Rails 集成,而不是调用 Algolia::Client.new
你应该使用:
AlgoliaSearch.configuration = { application_id: 'xxx', api_key: 'xxx' }
# this will call Algolia.init
您可以找到更多文档 on GitHub。
如果您想使用底层 Ruby API 客户端,而不需要 Rails 集成;您可以选择:
使用原始 Ruby API 客户端,单例方式:
Algolia.init application_id: 'xxx', api_key: 'xxx'
index = Algolia::Index.new('myindex') # it will use the API client initialised globally
index.add_objects(...)
使用原始 Ruby API 客户端,N 实例方式:
client = Algolia::Client.new application_id: 'xxx', api_key: 'xxx'
index = client.init_index('myindex')
index.add_objects(...)
我是第一次使用 Algolia 并尝试在本地重新编制索引,但它抛出了以下错误:
Algolia::AlgoliaError: API not initialized
2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: {"class":"Search::SomeWorker","args":[2,false],"retry":5,"queue":"default","jid":"1519b78812e13d6df5fdb6a9","created_at":1475216280.067702,"enqueued_at":1475216280.067759,**"error_message":"API not initialized","error_class":"Algolia::AlgoliaError"**,"failed_at":1475216280.0707068,"retry_count":0}
**2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: Algolia::AlgoliaError: API not initialized**
2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: /Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-1.11.0/lib/algolia/client.rb:657:in `client'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-1.11.0/lib/algolia/index.rb:11:in `initialize'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:229:in `new'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:229:in `initialize'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:647:in `new'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:647:in `algolia_ensure_init'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:492:in `block in algolia_index!'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:489:in `each'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:489:in `algolia_index!'
/Users/xxx/.rvm/gems/ruby-2.3.1@foro/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:792:in `algolia_index!'
我连接到 Algolia 客户端没有问题,如下所示:
[1] pry(main)> Algolia::Client.new(application_id: xxx, api_key: xxx)
=> #<Algolia::Client:0x007fe100329f40
@api_key="xxx",
@application_id="xxx",
@batch_timeout=120,
@connect_timeout=2,
@headers=
{"X-Algolia-API-Key"=>"xxx",
"X-Algolia-Application-Id"=>"xxx",
"Content-Type"=>"application/json; charset=utf-8",
"User-Agent"=>"Algolia for Ruby 1.11.0"},
@hosts=["xxx.algolia.net", "xxx-1.algolianet.com", "xxx-3.algolianet.com", "xxx-2.algolianet.com"],
@receive_timeout=30,
@search_hosts=["xxx-dsn.algolia.net", "xxx-2.algolianet.com", "xxx-1.algolianet.com", "xxx-3.algolianet.com"],
@search_timeout=5,
@send_timeout=30,
@ssl=true,
@ssl_version=nil>
任何帮助都会很棒。
这可能是因为您 mixing up the 2 ways 使用基础 Ruby API 客户端。有两种方法可以使用 Algolia Ruby API 客户端:
- 使用单例设计模式(1 个全局 API 客户端);
- 或使用常规的 N 个客户端实例。
看起来你正在尝试使用 Rails 集成,假设你已经在全局初始化了底层 API 客户端(使用单例设计模式)。
使用 Rails 集成,而不是调用 Algolia::Client.new
你应该使用:
AlgoliaSearch.configuration = { application_id: 'xxx', api_key: 'xxx' }
# this will call Algolia.init
您可以找到更多文档 on GitHub。
如果您想使用底层 Ruby API 客户端,而不需要 Rails 集成;您可以选择:
使用原始 Ruby API 客户端,单例方式:
Algolia.init application_id: 'xxx', api_key: 'xxx'
index = Algolia::Index.new('myindex') # it will use the API client initialised globally
index.add_objects(...)
使用原始 Ruby API 客户端,N 实例方式:
client = Algolia::Client.new application_id: 'xxx', api_key: 'xxx'
index = client.init_index('myindex')
index.add_objects(...)