我在我的服务器上安装了Elasticsearched 6.6.1,并与我的ruby on rails应用程序中的Searchkick gem一起工作。
在我的产品模型上,我添加了具有默认真实值的“活动”布尔值列。
我用rake searchkick:reindex:all RAILS_ENV=production
为所有模型建立了索引,并在控制器中搜索了我的产品模型,如下所示:
Product.search(
q,
fields: SEARCHES_FIELDS,
where: args,
order: { created_at: :desc },
page: page,
per_page: per_page,
includes: %i[holder]
)
并且args包含active:true
def retrieve_args
args = {}
args[:created_at] = { gte: Date.parse(date_range[:from]) } unless date_range[:from].nil?
args[:created_at] = { lte: Date.parse(date_range[:to]) } unless date_range[:to].nil?
args[:active] = true
args
end
如果我删除args[:active] = true
,则响应包含预期结果。
这段代码可以在开发环境中的本地主机上正常运行,但是当我在生产模式下的服务器上运行它并运行rake searchkick:reindex:all RAILS_ENV=production
时,第一个请求的响应正确,但是如果我再次请求,响应为空,如下所示: >
{
"total_pages": 0,
"next_page": null,
"posts": []
}
我知道这不是我的代码在本地主机上工作的错误,但是我不知道为什么在生产服务器上首次请求后我得到的响应为空?