|
|
|
|
@@ -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)
|
|
|
|
|
@@ -82,7 +91,8 @@ func (s *SearchService) GetSearchResults(c *gin.Context) {
|
|
|
|
|
boolQuery := utils.CreateBoolQuery(should_query)
|
|
|
|
|
search_query := utils.CreateSearchQuery(boolQuery)
|
|
|
|
|
source_query := utils.CreateSourceQuery("error", "error_hash", "created_at")
|
|
|
|
|
finalQuery := utils.CreateEsQuery(source_query, search_query, size_query)
|
|
|
|
|
sort_query := utils.CreateSortQuery("created_at", "desc", "")
|
|
|
|
|
finalQuery := utils.CreateEsQuery(source_query, search_query, size_query, sort_query)
|
|
|
|
|
fields := []string{"error", "significant_stack", "title"}
|
|
|
|
|
var res, _, total, err = s.elasticSearchClient.SearchDocuments(finalQuery, fields)
|
|
|
|
|
if err != nil {
|
|
|
|
|
@@ -96,9 +106,17 @@ func (s *SearchService) GetSearchResults(c *gin.Context) {
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func getDefaultSortKey(searchKey string) string {
|
|
|
|
|
if len(searchKey) > 0 {
|
|
|
|
|
return "score"
|
|
|
|
|
}
|
|
|
|
|
return "lastSeen"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *SearchService) GetErrorListV2(c *gin.Context) {
|
|
|
|
|
projectId := c.Query("project_id")
|
|
|
|
|
sortKey := c.DefaultQuery("sort_key", "lastSeen")
|
|
|
|
|
search_key := c.DefaultQuery("search_key", "")
|
|
|
|
|
sortKey := c.DefaultQuery("sort_key", getDefaultSortKey(search_key))
|
|
|
|
|
var orderQuery = ""
|
|
|
|
|
|
|
|
|
|
if sortKey == "lastSeen" {
|
|
|
|
|
@@ -112,13 +130,26 @@ 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"))
|
|
|
|
|
first_seen_aggs_query := utils.BuildAggregationQuery("first_seen", utils.CreateMinAggregationQuery("created_at"))
|
|
|
|
|
top_hits_aggs_query := utils.CreateAggregationQuery(top_hits_aggs_name_query, last_seen_aggs_query, first_seen_aggs_query)
|
|
|
|
|
term_aggs_query := utils.CreateTermsAggregationQuery("error_hash", 100000, orderQuery)
|
|
|
|
|
if sortKey == "score" {
|
|
|
|
|
term_aggs_query = utils.CreateTermsAggregationQuery("error_hash", 100000, "")
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
terms_aggs_query_with_name := utils.BuildAggregationQuery("errors_by_hash", term_aggs_query, top_hits_aggs_query)
|
|
|
|
|
final_terms_aggs_query := utils.CreateAggregationQuery(terms_aggs_query_with_name)
|
|
|
|
|
final_query := utils.CreateEsQuery(search_query, size_query, final_terms_aggs_query)
|
|
|
|
|
|