프라이머리 샤드는 인덱스 생성 후 불변하다 프라이머리 샤드는 클러스터링 된 노드에 분산 생성된다.(예: 전체 노드의 수가 3개 이고 Number_of_shards : 3 이면 각 노드별로 1개의 프라이머리 샤드가 생성) 레플리카 샤드는 클러스티링 된 노드에 각각 생성된다. (예: 전체 노드의 수가 3개 이고 Number_of_replicas : 3 이면 각 노드별로 3개의 레플리카 샤드가생성) 각 노드의 레플리카 샤드는 현재 노드에 생성되어있는 프라이머리 노드가 아닌 다른 노드의 프라이머리 노드를 복사한다 클러스터링 된 노드의 다수가 다운되면 해당 클러스터는 정상 동작할 수 없다
패킷 사이즈 제한때문에 100만 Document를 insert하는 BulkInsert를 100개의 Document씩 잘개쪼개면 Elasticsearch write 풀의 대기큐 공간만 많이 잡아먹게된다. 그렇다고 또 큰데이터를 한번에 다 보낸다고 해서 무조건 한칸의 대기 큐 공간을 차지하는 것도 아니다. 너무 크면 elasticsearch내부에서 알아서 대용량 Bulk를 쪼개서 대기 큐에 적재하는 것 같다. 그러니 너무 커서 패킷 사이즈를 초과하지 않고, 너무 작아서 write 대기큐의 공간을 많이 잡아먹지 않도록 쪼개는게 중요하다.
Log4j에 들어와서 Lockup 플러그인에 JNDI 파서가 추가되었는데 이 JNDI 파서를 통한 원격 코드 실행(RCE -Remote Code Execution) 취약점이 발견되어 전 세계적으로 큰 이슈가 되었습니다. 해당되는 Log4J의 버전으로는 2.0-beta9 ~ 2.15 가 포함되며 제가 사용하던 Elasticsearch 7.8.1 버전에서 Log4j 2.11.1 을 사용중이기에 해당 이슈에 영향을 받을 것 으로 판단되어 조치한 내용을 기록합니다. Elasticsearch 어떤 버전이 이슈에 포함될까? 이번 이슈는 글로벌한 이슈이기에 Elasticsaerch에서도 공식적인 가이드를 빨리 발표하였습니다. 링크 : https://discuss.elastic.co/t/apache-log4j2-rem..
엘라스틱 서치 운영중에 발생한 index read-only 전환 현상에 대하여 기록합니다. 어느날 엘라스틱 서치에서 아래와 같은 에러가 발생하였습니다. org.elasticsearch.cluster.block.ClusterBlockException: index [file-log-000001] blocked by: [TOO_MANY_REQUESTS/12/index read-only / allow delete (api)] 이유 해당 에러에 대하여 검색결과 디스크 용량이 어느 수준으로 쌓이게되면 엘라스틱 서치 설정에 의하여 인덱스가 read only로 바뀌게 됩니다. 설정은 사용자가 변경할 수 있으며 설정에 대한 상세 내용은 아래 링크를 통하여 확인하실 수 있습니다. 관련 내용 링크 : https://www...
환경 : Elasticsearch 7.8.1 TermsAggregationBuilder 이용하여 Terms 집계를 사용할 경우 대량의 데이터를 집계하다가 too_many_buckets_exception 을 마주하게 되었습니다. { "error": { "root_cause": [ { "type": "too_many_buckets_exception", "reason": "Trying to create too many buckets. Must be less than or equal to: [10000] but was [10001]. This limit can be set by changing the [search.max_buckets] cluster level setting.", "max_buckets": 1..
순서 RestHighLevelClient 객체를 생성합니다. Request(요청) 객체를 생성합니다. Request.source(JSON String, Type) 을 호출하여 Request객체를 셋팅합니다. RestHighLevelClient.index(Request객체, RequestOptions) 를 통하여 데이터를 삽입하여 리턴 값으로 Response객체를 받습니다. Response객체를 통하여 Request의 결과를 확인합니다. 예시 // 1 RestHighLevelClient restHighLevelClient = new RestHighLevelClient(); String jsonUserInformation = objectMapper.writerWithDefaultPrettyPrinter()...
Elaticsearch를 이용하는 중 하나의 Field에 추가적으로 데이터를 넣어야하는 경우가 발생하였다. 서칭과 테스트 결과 update API와 Script를 이용하면 구현이 가능하였다. 예시 1. Index 생성 mehtod : PUT http://localhost:9200/users { "settings": { "index": { "number_of_shards": 4, "number_of_replicas": 1 } }, "mappings": { "properties": { "name" : { "type" : "text" }, "user_log": {"type": "object"} } } } 2. 필드에 데이터 추가 mehtod : POST http://localhost:9200/users/_up..
- Total
- Today
- Yesterday
- Lambda
- C
- UE4
- LambdaFunction
- c++
- double free
- bug
- 람다함수
- c++11
- unrealengine
- 람다
- Trouble shooting
- coordinate system
- rotator
- UE5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |