목록DevOps/Elastic (5)
Dazzling 개발 노트
Runtime Fields 쿼리 시간에 동적으로 실행되는 필드 정의 인덱스에 물리적으로 저장되지 않고 검색, 집계, 정렬의 요청이 실행될 때 실시간으로 계산 - 사용사례 : 새로운 계산 필드 도입, 기존 데이터에 대한 다양한 가공/분석을 수행할 때 유용 Script Fields 검색 요청에서 사용되며, 각 문서에 대한 사용자 정의 스크립트를 실행하여 계산된 값 반환 검색 결과에 추가적인 필드로 포함되어 반환 - 사용사례 : 검색 결과에 추가 정보를 동적으로 제공하고자 할 때 유용 Runtime Fields VS Script Fields runtime fields는 검색, 집계, 정렬 등 다양한 쿼리에서 넓은 범위로 사용 script_fields는 주로 검색 결과에 추가적인 정보를 제공하는 데 사용 run..
Painless Elasticsearch에서 사용되는 스크립팅 언어 동적 스크립트 작성을 위해 설계된 안전하고 강력하며 쉬운 성능을 제공하는 스크립팅 언어 JAVA 기반으로 개발되었으며, 자바 문법과 유사 "lang": "painless" : 스크립트가 Painless 언어를 사용하여 작성되었음을 나타냄 기본값으로 설정되어 있어 명시하지 않아도 Painless로 작성됨
쿼리 DSL(Query Domain Specific Language) 사용자가 데이터를 쿼리하고 조작하는 방법을 정의하는데 사용되는 JSON 기반의 언어 검색 쿼리 (query) : 특정 조건에 맞는 문서 조회 가능 : 데이터를 검색하는데 사용되는 다양한 쿼리 유헝(match, term, range 등)을 포함하여 복잡한 검색 조건 구성 가능 집계 (aggregation) : 데이터에 대한 복잡한 분석과 집계 수행 가능 : terms, histogram, bucket 등 다양한 유형의 집계로 데이터 요약, 통계, 분석 수행 가능 term과 match 쿼리의 차이점 term : 정확한 값 일치를 위해 사용 분석기를 거치지 않아 입력한 텍스트와 완전히 동일한 결과를 조회한다. match : 분석된 텍스트와 ..
script 사용 시 문서의 필드 값에 접근하기 위해 여러 문법이 존재한다. ctx._source.local_authority: ctx._source를 통한 접근은 문서의 원본 소스를 직접 참조합니다. 이 방식은 주로 문서 업데이트 시 사용됩니다. ctx._source를 사용하면 해당 문서의 원본 JSON 소스에 저장된 데이터를 직접 읽고 수정할 수 있습니다. 이는 문서의 필드 값을 업데이트하거나 새 필드를 추가할 때 유용합니다. 이 방식은 업데이트 연산에서 전체 문서를 로드하므로 비용이 더 많이 들 수 있고, 대규모 데이터 세트에 대한 업데이트를 수행할 때는 성능에 영향을 줄 수 있습니다. doc['local_authority'].value: doc['field_name'].value 방식은 검색 쿼리..
쇼핑몰에서 상품 검색이 중요하다는 생각이 들었다. LG TV를 검색했을 때 보통의 쇼핑몰은 LG ~~~ TV와 더불어 LG가 아니더라도 유사 TV 제품까지 검색된다. 그렇지만 일반 쿼리로 검색하면 LG TV 라고 검색했을 때 LG와 TV가 붙어있지 않은 검색어는 결과가 나오지 않는다. 이 부분을 해결하기 위해 Elasticsearch 검색을 도입시키고자 했다. 이미 프로젝트가 JPA로 세팅이 다 되어있고, 데이터도 MySql에 들어있는 상황, 프로젝트 마감 기간이 일주일도 남지 않은 점을 고려해 최소한의 노력으로 결과를 도출하고자 했다. 개발 환경 Spring Boot 2.6.5 Gradle Java 11 Elastic Cloud 8.12 Build.gradle 의존성 추가 ElasticsearchCon..