공부하기/엘라스틱서치
-
엘라스틱서치 multi get api공부하기/엘라스틱서치 2024. 2. 28. 09:59
- 하나 이상의 인덱스에서 여러 문서를 검색하는 데 사용한다. - 요청 URI에 인덱스를 지정하는 경우 요청 본문에 문서 ID만 지정 문법 GET _mget GET 인덱스이름/_mget -> 기본 인덱스를 요청한 인덱스이름으로 지정한다 실습 데이터 POST _bulk { "index" : { "_index":"test", "_id" : "1" } } { "field1" : "하나, 둘" } { "create" : { "_index" : "test", "_id" : "2" } } { "field1" : "하나, 둘, 셋" } { "create" : { "_index" : "test", "_id" : "3" } } { "field1" : "하나, 둘, 셋, 넷" } { "create" : { "_index"..
-
엘라스틱서치 bluk api공부하기/엘라스틱서치 2024. 2. 27. 17:59
여러 색인, 업데이트, 삭제 작업을 한 번의 요청에 담아서 보내는 API 대량의 데이터를 색인할 때 많이 사용된다. 요청 본문이 JSON이 아니라 NDJSON 형태 NDJSON : 여러 줄의 JSON을 줄바꿈 문자로 구분하여 요청을 보내는 형태 헤더 Content-Type 의 값을 application/json이 아닌 application/x-ndjson으로 요청을 보내야한다. 줄바꿈 문자 \n으로 끝나야한다. 첫 줄은 요청의 종류와 인덱스, _id, 라우팅 등을 지정한다 추가적인 요청 본문을 필요로 하는 경우 다음 줄에 이어서 기재한다 따라서 요청 하나의 크기는 1줄~2줄이 된다. 단건 문서를 여러번 요청하는것보다 bulk API로 한번에 요청하는것이 성능상 대부분 좋다. http 요청을 청크(chu..
-
엘라스틱서치 업데이트 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": {..