properties vs fields

목표 인덱스 mapping 정보에서 properties와 fields의 차이점을 이해한다. properties 서브 필드를 가지고 있는 object와 nested 타입 매핑에서 사용된다. 새로운 속성을 추가하기 위해서 사용한다. fields 같은 필드를 다른 목적으로 사용한다는 의미다. 예를 들어, string 타입의 필드를 full-text search를 위한 text 필드와 정렬을 위한 keyword로 매핑할 때 사용할 수 있다. 참고 자료 https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html

2025-10-02 · 1 min · 52 words

Pattern tokenizer

목표 Pattern tokenizer 의 사용법을 이해한다. 사용법 정규식을 이용해서 토크나이징 할 때 사용한다. 패턴을 입력하지 않으면 기본값으로 \W+를 사용한다. 예시 아래와 같이 커스텀 토크나이저를 등록해서 사용할 수 있다. PUT my-index-000001 { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "my_tokenizer" } }, "tokenizer": { "my_tokenizer": { "type": "pattern", "pattern": "," } } } } } POST my-index-000001/_analyze { "analyzer": "my_analyzer", "text": "comma,separated,values" } [ comma, separated, values ] 참고 자료 https://www....

2025-10-02 · 1 min · 72 words

ELK로 Spring 애플리케이션의 로그 남기기

목표 Spring 애플리케이션의 로그를 남기기 위해 ELK를 구축한다. Spring MVC의 액세스 로그도 ELK에 남기도록 구현한다. ELK란? Elasticsearch, Logstash, Kibana의 약자 Elasticsearch: 검색 및 분석 엔진용 분산 시스템 Logstash: 여러 source로부터 데이터를 수집하고 가공하는 데이터 처리 파이프라인 Kibana: Elasticsearch 데이터 시각화 도구 ELK 작동 방식 Logstash가 다양한 서버, 애플리케이션, 시스템 등에서 생성되는 로그나 데이터를 수집한다. Logstash가 수집된 원본 데이터를 파싱하고, 필드를 추가하거나 불필요한 부분을 제거하여 분석에 용이한 형태로 가공한다. 가공된 데이터는 Elasticsearch에 인덱싱되어 저장된다....

2025-08-19 · 3 min · 443 words

특정 필드가 없는 도큐먼트 조회 쿼리

목표 특정 필드가 없는 도큐먼트 조회 쿼리 작성법을 이해한다. exists exists 쿼리를 통해서 필드를 존재하는 도큐먼트를 필터링할 수 있다. GET /_search { "query": { "exists": { "field": "user" } } } 아래 예시와 같이 must_not을 통해 필드가 없는 도큐먼트도 조회가 가능하다. GET /_search { "query": { "bool": { "must_not": { "exists": { "field": "your_field" } } } } } 참고 자료 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html https://stackoverflow.com/questions/29357148/how-to-filter-out-fields-that-do-not-exist-in-elastic-search

2024-09-15 · 1 min · 63 words

최대 샤드 개수

배경 테스트 코드 실행 중에 ES에서 최대 샤드 개수를 초과해서 인덱스를 만들 수 없다는 오류가 발생했다. cluster.max_shards_per_node ES 클러스터 설정 값 중에 한 노드 당 만들 수 있는 최대 샤드 수가 있다. 클러스터 내에 있을 수 있는 (프라이머리 샤드 수) + (레플리카 샤드 수)의 최대는 cluster.max_shards_per_node * number of non-frozen data nodes 참고 자료 https://www.elastic.co/guide/en/elasticsearch/reference/current/misc-cluster-settings.html

2024-09-15 · 1 min · 55 words

keyword의 최대 길이

배경 fields 매핑을 이용해 특정 text를 keyword로도 사용할 수 있도록 설정해둠 그러나 keyword 필드에 값이 존재하지 않음 원인 keyword 타입 매핑시에 처리 가능한 최대 길이를 설정할 수 있다. "ignore_above" : <자연수> 옵션이며, 다이나믹 매핑으로 keyword가 생성될 때는 기본값인 256으로 설정된다. 참고 자료 https://esbook.kimjmin.net/07-settings-and-mappings/7.2-mappings/7.2.1#keyword https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html

2024-09-15 · 1 min · 44 words

Elasticsearch 시작하기

Elasticsearch 내부 동작을 이해한다. Elasticsearch에 새로운 컬럼?을 추가해본다. 구조 데이터 색인 색인(indexing): 데이터가 검색될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰들로 변환하여 저장하는 과정 인덱스(index): 색인을 거친 결과물, 또는 색인된 데이터가 저장되는 저장소. Elasticsearch에서 도큐먼트들의 논리적인 집합을 표현하는 단위이기도 하다. 검색(search): 인덱스에 들어있는 검색어 토큰들을 포함하고 있는 문서를 찾아과는 과정 질의(query): 사용자가 원하는 문서를 찾거나 집계 결과를 출력하기 위해 검색 시 입력하는 검색어 또는 검색 조건 Elasticsearch 환경 설정 config/jvm....

2024-09-15 · 6 min · 1166 words