gitlab集成高级搜索,查询结果不稳定
Summary
现象:客户gitlab集成了es,但是在gitlab界面上有的项目的code可以搜到,有的搜不到。 全局高级搜索 所在项目级别高级搜索
Steps to reproduce
- 分别看了sidekiq、elasticsearch.log,对于仓库的更新,是可以正常同步到es集群中,同时对于在gitlab界面上查找code时候,也是有记录的,但是不报错。
- 通过在控制台命令确认,确实是启用了高级所有
命令如下:
u = User.find_by_email('email_of_user_doing_search') s = SearchService.new(u, {:search => 'search_term'}) pp s.search_objects.class
- 同时在控制台查找code,控制台返回为空
命令如下:
u = User.find_by_username('your-username') s = SearchService.new(u, {:search => 'search_term', :scope => 'blobs'}) pp s.search_objects.to_a
以上可以说明,gitlab集成es是没问题的,且在索引更新上是没问题。但是在gitlab的查找界面上出现了后台没数据导致了问题。
- 接下来,让客户在配置高级所有栏,停止了高级搜索,且删除了es的url、认证信息,保存后,通过控制台查找,确实已经不使用了高级搜索。
命令如下:
::Gitlab::CurrentSettings.elasticsearch_search? ::Gitlab::CurrentSettings.elasticsearch_indexing?
- 然后再次重新配置高级搜索,配置完成后,再次去搜索code,结果可以搜索。但是换一个其他的字符串,界面上又找不到了。但是此时通过控制台查找code,控制台返回是又结果的,说明通过rais控制台也可以使用高级搜索找到数据,但是界面上却不显示。
命令如下:
u = User.find_by_username('your-username') s = SearchService.new(u, {:search => 'search_term', :scope => 'blobs'}) pp s.search_objects.to_a
- 因为上面在控制台可以看到查找记录,但是gitlab界面上找不到,就在高级搜索那里点击
索引所有项目
,过了一会依然没有查询结果。