Compare commits

...

10 Commits

Author SHA1 Message Date
Aman Singh
73e2b967a0 Merge pull request #66 from navi-ppl/TP-5555/hotfix-search
TP-5555 | hotfix for search
2025-01-10 14:44:42 +05:30
varnit goyal
cf1f35cc33 TP-5555 | hotfix for search 2025-01-10 14:43:31 +05:30
Aman Singh
c271e5a7ec Merge pull request #65 from navi-ppl/TP-5555/search-service-score-sorting
TP-5555 | include sorting by score
2025-01-10 13:38:26 +05:30
varnit goyal
b99b7c6a67 TP-5555 | include sorting by score 2025-01-10 13:35:57 +05:30
Aman Singh
32d0f4af2f Merge pull request #64 from navi-ppl/TP-5555/search-params-addition
TP-5555 | search param addition
2025-01-10 12:43:13 +05:30
varnit goyal
989493506f TP-5555 | search param addition 2025-01-10 12:38:59 +05:30
Aman Singh
dcf59b0d98 Merge pull request #63 from navi-ppl/TP-5555/search-addition
TP-5555 | sort search results
2025-01-09 17:09:50 +05:30
varnit goyal
5f8e30d421 TP-5555 | sort search results 2025-01-09 16:59:22 +05:30
Aman Singh
62da8d4619 Merge pull request #62 from navi-ppl/TP-5555/search-addition
TP-5555 | search addition
2025-01-09 16:20:29 +05:30
varnit goyal
25a767d2d6 TP-5555 | remove package json 2025-01-09 16:18:36 +05:30
3 changed files with 39 additions and 17 deletions

View File

@@ -29,6 +29,7 @@ const (
AggregationQuery = `"aggs": { %s }` AggregationQuery = `"aggs": { %s }`
AggregationQueryFormat = `"%s": { %s }` // aggregation name, aggregation query AggregationQueryFormat = `"%s": { %s }` // aggregation name, aggregation query
TermsAggregationQuery = `"terms": { "field": "%s", "size": %d, %s}` TermsAggregationQuery = `"terms": { "field": "%s", "size": %d, %s}`
TermsAggregationQueryWithoutSort = `"terms": { "field": "%s", "size": %d}`
MinAggregationQuery = `"min": { "field": "%s" }` MinAggregationQuery = `"min": { "field": "%s" }`
MaxAggregationQuery = `"max": { "field": "%s" }` MaxAggregationQuery = `"max": { "field": "%s" }`
CardinalityAggregationQuery = `"cardinality": { "field": "%s" }` CardinalityAggregationQuery = `"cardinality": { "field": "%s" }`
@@ -196,7 +197,11 @@ func CreateMaxAggregationQuery(field string) string {
} }
func CreateTermsAggregationQuery(field string, size int, orderQuery string) string { func CreateTermsAggregationQuery(field string, size int, orderQuery string) string {
return fmt.Sprintf(TermsAggregationQuery, field, size, orderQuery) if len(orderQuery) > 0 {
return fmt.Sprintf(TermsAggregationQuery, field, size, orderQuery)
}
return fmt.Sprintf(TermsAggregationQueryWithoutSort, field, size)
} }
func CreateTermsAggregationQueryWithoutSize(field string) string { func CreateTermsAggregationQueryWithoutSize(field string) string {

View File

@@ -1,14 +0,0 @@
{
"name": "service",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/navi-ppl/cybertron.git"
},
"private": true
}

View File

@@ -29,6 +29,7 @@ func (s *SearchService) GetErrorDetails(c *gin.Context) {
error_hash := c.Query("error_hash") error_hash := c.Query("error_hash")
project_id := c.Query("project_id") project_id := c.Query("project_id")
from := c.DefaultQuery("from", "0") from := c.DefaultQuery("from", "0")
search_key := c.DefaultQuery("search_key", "")
fromInNumber, err := strconv.ParseInt(from, 10, 64) 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) 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) project_id_term_query := utils.CreateTermSubQuery("project_id", project_id)
mustQuery := utils.CreateMustQuery(term_query, project_id_term_query) 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) boolQuery := utils.CreateBoolQuery(mustQuery)
search_query := utils.CreateSearchQuery(boolQuery) search_query := utils.CreateSearchQuery(boolQuery)
size_query := utils.CreateSizeQuery(1) size_query := utils.CreateSizeQuery(1)
@@ -82,7 +91,8 @@ func (s *SearchService) GetSearchResults(c *gin.Context) {
boolQuery := utils.CreateBoolQuery(should_query) boolQuery := utils.CreateBoolQuery(should_query)
search_query := utils.CreateSearchQuery(boolQuery) search_query := utils.CreateSearchQuery(boolQuery)
source_query := utils.CreateSourceQuery("error", "error_hash", "created_at") 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"} fields := []string{"error", "significant_stack", "title"}
var res, _, total, err = s.elasticSearchClient.SearchDocuments(finalQuery, fields) var res, _, total, err = s.elasticSearchClient.SearchDocuments(finalQuery, fields)
if err != nil { 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) { func (s *SearchService) GetErrorListV2(c *gin.Context) {
projectId := c.Query("project_id") 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 = "" var orderQuery = ""
if sortKey == "lastSeen" { if sortKey == "lastSeen" {
@@ -112,13 +130,26 @@ func (s *SearchService) GetErrorListV2(c *gin.Context) {
} }
//size := c.DefaultQuery("size", "100000") //size := c.DefaultQuery("size", "100000")
term_query := utils.CreateTermSubQuery("project_id", projectId) 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) search_query := utils.CreateSearchQuery(term_query)
if len(search_key) > 0 {
search_query = utils.CreateSearchQuery(boolQuery)
}
size_query := utils.CreateSizeQuery(0) 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"})) 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")) last_seen_aggs_query := utils.BuildAggregationQuery("last_seen", utils.CreateMaxAggregationQuery("created_at"))
first_seen_aggs_query := utils.BuildAggregationQuery("first_seen", utils.CreateMinAggregationQuery("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) 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) 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) 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_terms_aggs_query := utils.CreateAggregationQuery(terms_aggs_query_with_name)
final_query := utils.CreateEsQuery(search_query, size_query, final_terms_aggs_query) final_query := utils.CreateEsQuery(search_query, size_query, final_terms_aggs_query)