ELK 스택/Elasticsearch
[Elasticsearh] 실전에서 사용 되는 요청 쿼리 작성
new_challenge
2020. 5. 9. 22:43
반응형
엘라스틱 서치에서 사용되는 다양한
쿼리문에 관한 포스팅입니다:)
모든 문서 검색
GET [INDEX_NAME]/_search
{
"query": {
"match_all" : {}
}
}
문서의 갯수 검색
GET [INDEX_NAME]/_count
{
"query": {
"match_all" : {}
}
}
조건 검색
특정 필드에 특정 값을 만족 하는 경우
GET [INDEX_NAME]/_count
{
"query": {
"match": {
"[필드명]": "[값]"
}
}
}
특정 필드의 값 조건 + 날짜 지정 범위
GET [INDEX_NAME]/_search
{
"size": 0, #출력결과 숨길때
"query": {
"bool": {
"must": [
{
"term": {
"[필드명]": "[값]"
}
},
{
"range": {
"@timestamp": {
"gte": "now-7d/d",
"lt": "now"
}
}
}
]
}
}
}
다중 조건 검색
GET [INDEX_NAME]/_count
{
"query": {
"bool": {
"must": [
{
"match": {
"[필드명1]": "[값1]"
}
},
{
"match": {
"[필드명2]": "[값2]"
}
},
{
"range": {
"@timestamp": {
"gte": "now-7d/d",
"lt": "now"
}
}
}
]
}
}
}
집계쿼리
특정 필드에 대한 Group by 집계
GET [INDEX_NAME]/_search
{
"size":0, # 집계결과만 나오도록
"aggs":{
"count":{
"terms": {
"field": "[필드명]",
"size": 6 # 집계 결과 원하는 개수 지정
}
}
}
}
>> 출력 화면 : Group by로 출력되어 해당되는 doc_count의 수가 내림차순으로 정렬
조건을 추가하고, 그 결과에 대한 Group by 결과 집계
GET [INDEX_NAME]/_search
{
"size":0,
"query": {
"match": {
"[조건 필드명]": "[값]"
}
},
"aggs":{
"count":{
"terms": {
"field": "[Group By를 설정 할 필드명]",
"size": 6
}
}
}
}
>> 출력 결과 : 조건에 해당하는 결과에 대한 집계가 이루어진다.
응용 : 조건과 시간 범위를 추가하여 검색한 뒤, Group by 집계
GET [INDEX_NAME]/_search
{
"size":0,
"query": {
"bool": {
"must": [
{
"term": {
"[조건 필드명]": "[값]"
}
},
{
"range": {
"@timestamp": {
"time_zone": "-09:00",
"gte": "now-1d/d",
"lt": "now"
}
}
}
]
}
},
"aggs":{
"count":{
"terms": {
"field": "[Groupby 필드명]",
"size": 6
}
}
}
}
>> 날짜 범위 조건이 제대로 작동하는지 확인하기 위해 날짜 기준을 변경해본다.
>> 출력 화면 : 날짜를 변경 할 때마다 출력의 doc_count가 달라진다
반응형