전체 글
-
엘라스틱서치 업데이트 API [script]공부하기/엘라스틱서치 2024. 2. 26. 15:15
스크립트를 통해 문서 내용를 변경할 수 있다. defualt script : painless ( 엘라스틱 서치에서도 권장 ) 기본적으로 자바 문법과 유사하다. 커스텀 플러그인을 통해 커스텀 스크립트도 사용할 수 있다. script.source ctx 변수를 통해 문서의 내용이나 메타데이터에 접근할 수 있다. script 필드와 doc 필드를 함께 요청하면 doc은 무시된다. 조회 API와 마찬가지로 routing과 refresh 옵션을 지정할 수 있다. 동일한 routing 값으로 지정하여 업데이트해야 의도한 대로 동작한다. 스크립트에서 접근할 수 있는 문맥 params : 요청한 params로 제공한 매개변수의 Map이다 ( 읽기전용 ) ctx._source : 저장된 문서의 _source를 Ma..
-
엘라스틱서치 업데이트 API [doc] ( detect_noop, doc_as_upsert )공부하기/엘라스틱서치 2024. 2. 25. 15:04
지정한 문서 하나를 업데이트한다. 요청 본문에 doc 또는 script를 지정하여 업데이트할 내용을 기술한다. 기본적으로 부분 업데이트(partial update)로 동작한다. _source를 비활성화시킨 경우 업데이트 API를 사용할 수 없다. doc에 내용을 직접 기술하는 업데이트 문법 POST 인덱스이름/_update/_id값 { "doc": { ... 업데이트 할 내용 } } detect_noop 엘라스틱서치는 업데이트 작업 수행 전 요청이 noop(no operation) 요청인지 확인하고 noop 요청이라면 쓰기 작업을 수행하지 않는다. noop을 검사하면 불필요한 디스크 I/O를 줄일 수 있다. 업데이트 요청에 detect_noop 옵션을 false로 요청하면 detect_noop은 비활성..
-
엘라스틱서치 조회 API공부하기/엘라스틱서치 2024. 2. 25. 14:33
조회 API는 문서 단건을 조회한다. 색인이 refresh 되지 않은 상태에서도 변경된 내용을 확인할 수 있다. 고유한 _id(식별자)를 사용하여 조회하는 경우 역색인이 필요하지 않기 때문이다. refresh전 translog에서도 조회가 가능 문서의 메타 데이터까지 같이 조회하는 경우 _doc을 사용 문서의 본문만 원한다면 _source를 사용 문법 GET 인덱스이름/_doc/_id값 GET 인덱스이름/_source/_id값 필드 필터링 _source_includes 옵션을 사용하면 원하는 필드만 응답 _source_excludes 옵션을 사용하면 원하지 않는 필드는 생략하여 응답 _source_includes 적용 후 제외할 필드를 선택 두 옵션 모두 여러개일 경우 ,를 사용하여 구분 필드 이름에 ..
-
엘라스틱서치 색인 API ( PUT | POST )공부하기/엘라스틱서치 2024. 2. 25. 13:57
- 색인 API는 문서 단건을 색인 - PUT 또는 POST 메서드에 _doc 또는 _create를 지정하여 호출 문법 PUT 인덱스이름/_doc/_id값 PUT 인덱스이름/_create/_id값 POST 인덱스이름/_doc POST 인덱스이름/_create/_id값 PUT 인덱스이름/doc/_id값 가장 기본이 되는 색인 API _id값이 동일한 문서가 존재한다면 새로운 문서로 덮어씌운다. PUT 인덱스이름/_create/_id값 문서를 덮어씌우면서 색인할 수 없음 (실패함) 지정한 _id값으로 새 문서를 색인 POST 인덱스이름/_doc _id값을 자동 생성하여 문서 색인 POST 인덱스이름/_create/_id값 [ PUT 인덱스이름/_create/_id값 ]과 유사하게 동작 차이를 찾지 못했음 c..
-
엘라스틱서치 라우팅공부하기/엘라스틱서치 2024. 2. 13. 16:45
인덱스를 구성하는 샤드 중 어떤 샤드를 대상으로 작업을 수행할지 지정하기 위해 사용 문서마다 라우팅값을 하나씩 지정할 수 있다. 문서가 저장된 샤드가 아닌 경우 검색 결과에 원하는 문서가 존재하지 않을 수 있다. 많은 데이터가 저장된 운영 환경에서는 가능하면 라우팅 값을 지정하는것이 성능에 좋다. 색인된 문서가 존재하는데도 다른 샤드에서 문서를 조회한 경우 요청한 문서가 존재하지 않는다는 응답을 반환받을 수 있다. 라우팅 값이 다르게 지정되면 한 인덱스 내에서 같은 _id를 가진 문서가 여러개 생길 수도 있다. 일관된 라우팅 정책을 세우고 사용해야한다. 문법 PUT 인덱스이름/_doc/_id값?routing=원하는값 // routing을 필수로 지정하는 문법 PUT 인덱스이름 { "mappings": {..
-
엘라스틱서치 템플릿공부하기/엘라스틱서치 2024. 2. 13. 15:38
-> 인덱스를 생성할 때마다 매번 설정값을 지정하는 수고를 덜 수 있다. -> 템플릿을 사전에 정의해두면 인덱스 생성 시 정의한 템플릿 설정대로 인덱스가 생성된다. 인덱스 템플릿 index_petterns 필드를 통해 인덱스 패턴을 지정 새로 생성되는 인덱스의 이름이 패턴과 부합하면 템플릿에 맞춰 인덱스가 생성된다. priority 필드 값을 이용하여 템플릿간 우선순위를 조정할 수 있다. 문법 PUT _index_template/템플릿이름 { "index_pattern": [...], "priority": 원하는값, "template": { "settings": { ... } }, ... } -> 실습 컴포넌트 템플릿 템플릿에서 중복되는 작은 영역을 컴포넌트화하여 사용 문법 PUT _component_t..
-
엘라스틱서치 애널라이저, 토크나이저, 노멀라이저공부하기/엘라스틱서치 2024. 2. 13. 00:42
애널라이저 text 타입의 필드 데이터는 애널라이저를 통해 분석 (0개 이상의 캐릭터 필터 + 1개 토크나이저 + 0개 이상의 토큰 필터)로 구성 standard 애널라이저 (기본값) : standard 토크나이저와 lowercase 토큰 필터로 구성 simple 애널라이저 : letter가 아닌 문자 단위로 토큰을 쪼개고 lowercase 토큰 필터가 적용 whitespace 애널라이저 : whitespace 토크나이저로 구성, 공백 문자 단위로 토큰을 쪼갠다. keyword 애널라이저 : keyword 토크나이저로 구성, 별다른 분석을 실시하지 않고 하나의 큰 토큰을 반환한다. pattern 애널라이저 : pattern 토크나이저와 lowercase 토큰 필터로 구성 language 애널라이저 : 여..
-
엘라스틱서치 _source 정리카테고리 없음 2024. 2. 12. 23:12
reindex : 원본 인덱스에서 내용을 대상 인덱스에 새로 색인하는 작업 _source 문서 색인 시점에 엘라스틱서치에 전달된 원본 JSON 문서를 저장하는 메타데이터 필드 _source 필드 자체는 역색인을 생성하지 않기 때문에 검색 대상이 되지 않는다. PUT 인덱스이름 { "mappings": { "_source":{ "enabled": false } } } 명령으로 데이터를 저장하지 않을 수 있다. 비활성화 한 경우 -> 권장되지 않음 update_by_query api를 이용할 수 없다. reindex api를 사용할 수 없다. _source 관련 설정은 운영에 영향이 매우 크므로 심사숙고하여 판단해야 한다. 디스크 공간을 절약해야만 하는 경우 - 인덱스 코덱 변경하여 디스크 공간을 확보할 수..