PONI's 좋은 개발자

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

ETL/Elasticsearch

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

PONI 2023. 6. 14. 10:31
반응형

1. match 검색

{
	"query": {
    	"bool": {
        	"must": [
            	{
                	"match": {
                    	"emp_no": "123456"
                    }
                },
                {
                	"nested": {
                    	"path": "nested_A",
                        "query": {
                        	"bool": {
                            	"must" [
                                	{
                                    	"match": {
                                        	"nested_A.use_yn": "Y"
                                        }
                                    }
                                ],
                                "must_not": [
                                	{
                                    	"match": {
                                        	"nested_A.str_dt": "99991231"
                                        }
                                    }
                                ]
                            }
                        }
                    }
                }
            ]
        }
    }
}

 

2. inner_hit 검색

위 검색의 결과에는 nested_A 필드에서 검색결과에 match 된 documents 만 보기가 어렵습니다.
이런 경우 inner hits 옵션을 사용하여 원하는 조건에 해당하는 documents 만 조회합니다.
{
	"query": {
    	"bool": {
        	"must": [
            	{
                	"match": {
                    	"emp_no": "123456"
                    }
                },
                {
                	"nested": {
                    	"path": "nested_A",
                        "query": {
                        	"bool": {
                            	"must" [
                                	{
                                    	"match": {
                                        	"nested_A.use_yn": "Y"
                                        }
                                    }
                                ],
                                "must_not": [
                                	{
                                    	"match": {
                                        	"nested_A.str_dt": "99991231"
                                        }
                                    }
                                ]
                            }
                        },
                        "inner_hits": {
                        	"size": 100
                        }
                    }
                }
            ]
        }
    }
}

 

3. term 검색

{
	"query": {
    	"bool": {
        	"must": [
            	{
                	"match": {
                    	"emp_no": "123456"
                    },
                    "terms": {
                    	"dty_cd": [
                        	"1111",
                            "2222",
                            "3333",
                            "4444"
                        ]
                    }
                }
            ]
        }
    }
}

 

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

 

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

반응형
Comments