我正在浏览轮胎 gem(将其用作 Elsaticsearch 客户端)库,尤其是 reindex 方法。这是 ruby 脚本的链接: https ://github.com/karmi/tire/blob/master/lib/tire/index.rb
所以这里是轮胎宝石中的重新索引方法。
def reindex(name, options={}, &block)
new_index = Index.new(name)
new_index.create(options) unless new_index.exists?
transform = options.delete(:transform)
Search::Scan.new(self.name, &block).each do |results|
documents = results.map do |document|
document = document.to_hash.except(:type, :_index, :_explanation, :_score, :_version, :highlight, :sort)
document = transform.call(document) if transform
document
end
new_index.bulk_store documents
end
end
为了进行重新索引,我得到了整个滚动和扫描的概念。但我无法理解的是上述方法中的转换选项。
这是做什么的:
transform = options.delete(:transform)
和这个:
document = transform.call(document) if transform
达到?
任何人都可以提供有关如何使用 :transform 选项的示例或用例吗?