Skip to content

gitlab集成高级搜索,查询结果不稳定

Summary

现象:客户gitlab集成了es,但是在gitlab界面上有的项目的code可以搜到,有的搜不到。 全局高级搜索 image 所在项目级别高级搜索 image

实际上这个数据在es集群中是有的 image

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
    image
  • 同时在控制台查找code,控制台返回为空 命令如下:
    u = User.find_by_username('your-username')
    s = SearchService.new(u, {:search => 'search_term', :scope => 'blobs'})
    pp s.search_objects.to_a
    image

以上可以说明,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界面上找不到,就在高级搜索那里点击索引所有项目,过了一会依然没有查询结果。

What is the current bug behavior?

What is the expected correct behavior?

Relevant logs and/or screenshots

Possible fixes