首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写Tire中所有ES索引的索引任务?

如何编写Tire中所有ES索引的索引任务?
EN

Stack Overflow用户
提问于 2013-01-09 07:47:55
回答 1查看 850关注 0票数 0

到目前为止,我有:

代码语言:javascript
复制
desc "Index Elastic Search"
namespace :tire do
  namespace :import do
    task all: :environment do
      aliases = Tire::Configuration.client.get(Tire::Configuration.url + '/_aliases').body
      indexes_names = MultiJson.load(aliases).keys

      indexes_names.each do |name|
        index = Tire::Index.new name
        index.delete
        index.import
        index.refresh
        puts "[INFO] #{name} re-indexed"
      end
    end
  end
end

但是我得到了一个错误

代码语言:javascript
复制
wrong number of arguments (0 for 1)
/Users/rege/.rvm/gems/ruby-1.9.3-p194@network/gems/tire-0.5.2/lib/tire/index.rb:185:in `import'
/Users/rege/Code/Network/lib/tasks/tire.rake:15:in `block (4 levels) in <top (required)>'
/Users/rege/Code/Network/lib/tasks/tire.rake:12:in `each'
/Users/rege/Code/Network/lib/tasks/tire.rake:12:in `block (3 levels) in <top (required)>'
Tasks: TOP => tire:import:all
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 07:55:03

您需要告诉每个索引要导入什么。假设您使用默认的索引命名约定,那么您需要这样做:

代码语言:javascript
复制
index.import name.singularize.camelcase.constantize.all

更新:根据您的命名风格,您可以使用以下代码:

代码语言:javascript
复制
index.import name.gsub(/^myapp_(development|production)__/, '').singularize.camelcase.constantize.all
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14226058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档