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
}
}
}
}
다음 포스팅에서는 엘라스틱 검색 쿼리에 대해서 추가적 다뤄보겠습니다.
<개선사항은 언제든지 댓글로 부탁드립니다!>
반응형