전체 글
-
Fuzzy Match QueryBackEnd/Elasticsearch API 2025. 4. 1. 04:00
검색어와 정확히 일치하지 않더라도 유사한 용어를 찾을 수 있게 해주는 기능입니다. 주로 오타, 철자 오류, 유사어 처리에 유용합니다. Fuzzy Match Query Match Query에 fuzziness 파라미터를 추가하여 사용합니다.GET /_search{ "query": { "match": { "field_name": { "query": "search_term", "fuzziness": "AUTO" } } }} 주요 파라미터fuzziness: 허용되는 최대 편집 거리입니다. "AUTO" 또는 정수 값(1, 2 등)으로 설정 가능하며, "AUTO"는 검색어 길이에 따라 자동으로 조정됩니다. (3~5글자: 1회 편집 허용, 6글자 이상: 2회..
-
Proximity SearchBackEnd/Elasticsearch API 2025. 3. 31. 05:00
구문(Phrase) 쿼리와 근접 쿼리(Proximity Search)는 검색 방식에서 중요한 차이점을 가집니다. 구문 쿼리는 검색어의 정확한 순서와 연속성을 요구합니다. 예를 들어 "New York"이라는 구문 쿼리는 두 단어가 정확히 같은 순서로 붙어있는 문서만 찾습니다. 이는 Elasticsearch에서 match_phrase 쿼리로 구현됩니다. 반면, 근접 쿼리는 더 유연한 검색을 제공합니다. 검색어들이 정확한 순서나 인접성을 갖지 않아도 되며, 지정된 거리(슬롭/slop) 내에 있으면 결과로 반환됩니다. Proximity Search match_phrase 쿼리에 slop 파라미터를 추가하여 Proximity Search를 수행합니다.GET /my_index/_search{ "query..
-
AggregationBackEnd/Elasticsearch API 2025. 3. 30. 09:00
Metric Aggregationmin: 지정된 필드의 최소값을 계산합니다.max: 지정된 필드의 최대값을 계산합니다.sum: 지정된 필드의 합계를 계산합니다.avg: 지정된 필드의 평균값을 계산합니다.stats: min, max, sum, avg, count를 한 번에 제공합니다.cardinality: 필드의 고유한(unique) 값 개수를 계산합니다. 정확한 값이 아닌 근사치(approximate count)를 제공합니다.percentiles: 백분위수를 계산합니다.geo-centroid: 위치 정보 필드의 중심점을 계산합니다.GET /index_name/_search{ "size": 0, "aggs": { "agg_name": { "avg": { "field": "fi..
-
Join QueryBackEnd/Elasticsearch API 2025. 3. 29. 03:00
Elasticsearch에서 JOIN은 문서 간의 관계를 설정하고 이를 통해 문서를 연결하여 검색할 수 있는 기능입니다. 단, Elasticsearch의 JOIN은 RDBMS와 달리 성능에 영향을 미칠 수 있습니다. 특히, has_child or has_parent 쿼리는 성능에 부담을 줄 수 있으므로, 데이터 모델링 시 신중히 고려해야 합니다. Parent-Child 관계 Parent-Child 관계는 한 문서가 부모가 되고, 다른 문서가 자식이 되는 구조입니다. 이 관계는 인덱스 내에서 설정되며, 부모와 자식 문서는 반드시 같은 샤드에 저장되어야 합니다.has_child 쿼리: 자식 문서가 특정 조건을 만족할 때 부모 문서를 반환합니다.has_parent 쿼리: 부모 문서가 특정 조건을 만족할 때 ..
-
Nested QueryBackEnd/Elasticsearch API 2025. 3. 23. 06:00
Nested Query는 중첩된 객체 배열 내의 필드를 정확하게 필터링할 수 있는 기능입니다. 일반적인 Object 타입과 달리 중첩된 객체 배열을 색인하고 검색하는데 사용됩니다. Nested Query 특징중첩된 객체 배열 내 각 객체를 독립적인 문서로 취급하여 검색합니다.중첩된 객체 내의 필드 간의 관계를 유지하여, 특정 조건을 만족하는 문서만 검색할 수 있습니다.일반적인 쿼리보다 느릴 수 있기에 대량의 데이터 처리 시 성능에 영향을 줄 수 있습니다.Nested Query는 반드시 nested 타입으로 매핑된 필드에서만 사용할 수 있습니다.must_not 쿼리는 Nested Query 내에서 제대로 작동하지 않을 수 있으므로, 긍정문으로 작성한 뒤 bool 쿼리를 사용하는 것이 좋습니다. 다음은 ..
-
BoostingBackEnd/Elasticsearch API 2025. 3. 23. 05:00
Boosting은 문서의 관련성 점수를 조정하여, 특정 조건을 만족하는 문서의 중요성을 높이거나 낮출 수 있는 기능입니다. Boosting Query 두 개의 쿼리를 결합하여 하나의 쿼리와 일치하는 문서의 관련성 점수를 높이고, 다른 쿼리와 일치하는 문서의 점수를 낮출 수 있습니다. 구성 요소positive: 반드시 일치해야 하는 쿼리입니다.negative: 일치하면 관련성 점수를 낮추는 쿼리입니다.negative_boost: 관련성 점수를 낮출 때 사용하는 배율입니다. 값은 0에서 1사이입니다.GET /my_index/_search{ "query": { "boosting": { "positive": { "match": { "text": "apple" ..
-
Full Text SearchBackEnd/Elasticsearch API 2025. 3. 22. 16:00
정확한 일치 검색을 하는 Term-Level Queries와 달리 Full Text Search는 텍스트 필드에서 유사한 문서를 빠르고 효율적으로 검색하는 기능입니다. 특징Term-Level QueriesFull Text Search검색 방식정확한 일치 검색유사한 문서 검색분석 여부 분석되지 않음분석됨 (토큰화, 소문자 변환 등)대소문자 구분대소문자 구분대소문자 구분하지 않음사용 예시고유 식별자, 상태 코드전체 텍스트 검색 How Full-Text Search WorksText Analysis: 텍스트를 토큰화하고, 소문자로 변환하며, Stop Words를 제거하는 등의 과정을 통해 검색을 최적화합니다.Inverted Index: 각 토큰을 문서 ID와 연결하여 빠르게 검색할 수 있는 구조를 제공합니다...
-
SearchBackEnd/Elasticsearch API 2025. 3. 20. 02:00
URI SearchesPOST /my_index/_doc/{ "content": "quick book", "publish_date": "2024-02-01"}POST /my_index/_doc/{ "content": "quick walk", "publish_date": "2024-03-01"}# URI SearchesGET /my_index/_search?q=content:quickGET /my_index/_search?q=content:quick AND content:walk DSL (Domain Specific Language) QueriesBasic SearchGET /my_index/_search{ "query": { "match": { "content": "quick" ..