Rails弹性搜索update_all之后的reindex数据

时间:2016-05-30 09:49:38

标签: ruby-on-rails elasticsearch searchkick

我正在使用Searchkick在我的Rails应用程序中与弹性搜索API进行交互,并且它几乎适用于所有情况,但我遇到的问题是我在我的模型中有状态字段,并且通过选中所有复选框a用户可以更改所有记录的状态,因此我使用{this.props.children}更新我的数据,这不会触发任何回调,并通过update_all回调搜索重新索引数据。而且,因为我的数据没有在弹性搜索中获得after_commit,因为它给出了相同的结果,我想要做的是,手动调用reindexed是一个不错的选择吗?

2 个答案:

答案 0 :(得分:3)

我实际上解决了它,没有重新索引整个数据本来是一个非常天真的解决方案,而不是我们也可以重新索引单个记录如下

product = Product.find 10
product.reindex
# or to reindex in the background
product.reindex_async

答案 1 :(得分:1)

您必须手动拨打Model.reindex。构建action_all以直接在DB级别进行更改。查找更多here

您可以创建after_action过滤器来重新编制索引数据。