PONI's 좋은 개발자

[Elasticsearch] 실무에서 자주 사용하는 쿼리(날짜) 본문

ETL/Elasticsearch

[Elasticsearch] 실무에서 자주 사용하는 쿼리(날짜)

PONI 2023. 9. 12. 09:50
반응형

1. 날짜 조건 검색(range)

특정 기간을 설정하여 데이터 수를 확인할때에 사용
rang 함수를 사용하여 기간 설정
  • lt : 미만
  • lte : 이하
  • gt : 초과
  • gte : 이상
get emp/_count
{
	"query": {
    	"range": {
        	"send_dt": {
            	"gte": "2023-09-10 14:00:00",
                "lte": "2023-09-12 14:00:00"
            }
        }
    }
}

2. 날짜집계 검색

-  aggs 으로 집계 설정

- range_aggs - date_range 날짜 집계 설정

- 기간설정은 from - to 로 설정 

get emp/_search
{
	"size": 0,
    "aggs": {
    	"range_aggs": {
        	"date_range": {
            	"field": "send_dt",
                "ranges": [
                	{
                    	"from": "2023-09-10",
                        "to": "2023-09-12"
                    }
                ]
            }
        }
    }
}
 

3. 날짜집계(필드별) 검색

- terms 에 속한 필드가 해당 기간안에 몇개가 있는지 확인

- 기간설정은 from - to 로 설정 

get emp/_search
{
	"size": 0,
    "aggs": {
    	"term_aggs": {
        	"terms": {
            	"field": "dvsn_cd"
            },
            "aggs": {
            	"range_aggs": {
                	"date_range": {
                    	"field": "send_dt",
                        "ranges": [
                        	{
                            	"from": "2023-09-10",
                                "to": "2023-09-12"
                            }
                        ]
                    }
                }
            }
        }
    }
}

 

4. Nested 필드 조건 검색

- inner_hits 으로 해당 필드만 검색

get emp/_search
{
	"_source: [
    	"emp_no"
        "emp_nm"
    ],
    "query": {
    	"nested": {
        	"path": "nested_regi",
            "query": {
            	"bool": {
                	"must": [
                    	{
                        	"bool": {
                            	"should": [
                                	{
                                    	"range": {
                                        	"nested_regi.date_str_dt": {
                                            	"from": "20231001",
                                                "to": "20231015"
                                            }
                                        }
                                    }
                                ]
                            }
                        },
                        {
                        	"bool": {
                            	"must": [
                                	{
                                    	"match": {
                                        	"nested_regi.regi_yn": "Y"
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            "inner_hits": {
            	"size": 100
            }
        }
    }
}

다음 포스팅에서는 엘라스틱 검색 쿼리에 대해서 추가적 다뤄보겠습니다.

 

<개선사항은 언제든지 댓글로 부탁드립니다!>

반응형
Comments