반응형
엘라스틱 서치에서 사용되는 다양한
쿼리문에 관한 포스팅입니다:)
모든 문서 검색
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가 달라진다
반응형
'ELK 스택 > Elasticsearch' 카테고리의 다른 글
[Elasticsearch] Scroll API 사용하기 (전체 문서 읽어오기) (0) | 2020.05.09 |
---|---|
[Elastic] Crontab을 활용해 주기적으로 Document 삭제 (0) | 2020.04.18 |
[Elasticsearch] 실전 쿼리 사용법 (0) | 2020.03.18 |
[Elasticsearch] Plugin 설치 및 적용 (0) | 2020.03.13 |
[Elasticsearch] python에서 엘라스틱 사용하기 (0) | 2020.02.11 |