AGGS 플러스 및/또는 필터링 로그를 중첩 나는 ElasticSearch 내가 ElasticSearch에 일부 로그를 인덱싱하고있어
나는이 매핑 인덱스를했습니다 ... 몇 가지 정보를 얻을하기 위해 ES API를 요청하는 몇 가지 의심을했습니다 :"appName" : {
"type" : "string",
"index" : "not_analyzed"
},
"log" : {
"type" : "string"
},
"projectName" : {
"type" : "string",
"index" : "not_analyzed"
}
나는 일부 응용 프로그램 ("프로그램 응용") '내부'와 일부 프로젝트 ("프로젝트 이름")을했습니다. 예 : App1과 App2는 Project1에 속합니다. "log"는 응용 프로그램 stdout/stderror에서 나온 '로그 라인'에 대한 것입니다.
예를 들어 로그 라인에 'debug'가 포함 된 최신 시간 로그 라인을 가져올 수 있습니다. aggs를 사용하고 버킷에 정보를 가져 오는 중입니다. I합니다 (ES API에 컬 쿼리) 이런 식으로 일을 해요 :
{
"size" : 0,
"query" :
{ "range" : { "time" : { "from" : "now-1h", "to" : "now" } } },
"aggs":
{
"matcheo" :
{
"filter":
{
"match": { "log" : "debug" }
},
"aggs":
{
"projectName":
{
"terms": { "field": "projectName", "size":0 },
"aggs":
{
"appName":
{
"terms": { "field": "appName", "size":0 }
}
}
}
}
}
}
}
결과 : 등등 각각의 프로젝트 이름에서 각 프로그램 응용과 ... 내가 Project1의 두 가지를 가지고있어
...
"matcheo" : {
"doc_count" : 25,
"projectName" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "Project1",
"doc_count" : 12,
"appName" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "App1",
"doc_count" : 12
}, {
"key" : "App2",
"doc_count" : 48
},
} ]
...
애플 리케이션 : "디버그"가 포함 된 12 개의 문서가있는 App1과 "디버그"가 포함 된 48 개의 문서가있는 App2 ...
지금 당장하고 싶은 것은 최신의 로그 라인을 얻는 것입니다. '디버그'또는 '오류'또는 '경고'를 포함하지만이 용어로 '병합'합니다. 예를 들어 각 appName (각 projectName에서)에 대해 "log :"에 "debug"가 포함 된 수, "log :"에는 "error"가 포함되어 있고 "log"에는 "warning"이 포함되어 있습니다 ...
나는 '필터'를 시도했습니다 : "match": { "log" : "debug warning error" }
그리고 나는 각 용어에 대해 얼마나 많은 것을 얻지 못합니다.
나를 도와 줄 수있는 사람이 있습니까? 미리 감사드립니다! 건배!