diff --git a/service/searchService.go b/service/searchService.go index fc7a363..fad7af9 100644 --- a/service/searchService.go +++ b/service/searchService.go @@ -29,6 +29,7 @@ func (s *SearchService) GetErrorDetails(c *gin.Context) { error_hash := c.Query("error_hash") project_id := c.Query("project_id") from := c.DefaultQuery("from", "0") + search_key := c.DefaultQuery("search_key", "") fromInNumber, err := strconv.ParseInt(from, 10, 64) @@ -38,8 +39,16 @@ func (s *SearchService) GetErrorDetails(c *gin.Context) { } term_query := utils.CreateTermSubQuery("error_hash", error_hash) + multiMatchQuery := utils.CreateMultiMatchQuery(search_key, "error", "title", "extra.metadata.agentId", + "extra.metadata.external_customer_id", + "extra.metadata.deviceId", + "extra.metadata.web_session_id", "extra.metadata.id") + project_id_term_query := utils.CreateTermSubQuery("project_id", project_id) mustQuery := utils.CreateMustQuery(term_query, project_id_term_query) + if len(search_key) > 0 { + mustQuery = utils.CreateMustQuery(term_query, project_id_term_query, multiMatchQuery) + } boolQuery := utils.CreateBoolQuery(mustQuery) search_query := utils.CreateSearchQuery(boolQuery) size_query := utils.CreateSizeQuery(1) @@ -100,6 +109,7 @@ func (s *SearchService) GetSearchResults(c *gin.Context) { func (s *SearchService) GetErrorListV2(c *gin.Context) { projectId := c.Query("project_id") sortKey := c.DefaultQuery("sort_key", "lastSeen") + search_key := c.DefaultQuery("search_key", "") var orderQuery = "" if sortKey == "lastSeen" { @@ -113,7 +123,16 @@ func (s *SearchService) GetErrorListV2(c *gin.Context) { } //size := c.DefaultQuery("size", "100000") term_query := utils.CreateTermSubQuery("project_id", projectId) + multiMatchQuery := utils.CreateMultiMatchQuery(search_key, "error", "title", "extra.metadata.agentId", + "extra.metadata.external_customer_id", + "extra.metadata.deviceId", + "extra.metadata.web_session_id", "extra.metadata.id") + should_query := utils.CreateMustQuery(term_query, multiMatchQuery) + boolQuery := utils.CreateBoolQuery(should_query) search_query := utils.CreateSearchQuery(term_query) + if len(search_key) > 0 { + search_query = utils.CreateSearchQuery(boolQuery) + } size_query := utils.CreateSizeQuery(0) top_hits_aggs_name_query := utils.BuildAggregationQuery("unique_errors", utils.CreateTopHitsAggsQuery(1, []string{"error", "significant_stack", "created_at", "error_hash"})) last_seen_aggs_query := utils.BuildAggregationQuery("last_seen", utils.CreateMaxAggregationQuery("created_at"))