Elasticsearch 새로 고침
5681 단어 Elasticsearch
예를 들어 하나의 데이터를 저장한 후에 나는 바로 데이터의 총 갯수를 되돌려야 한다. 이때 문제가 발생한다. Elasticsearch는 조작 전의 데이터를 되돌려준다. 즉, 만약에 500개의 데이터가 나오기 시작하면 내가 하나를 삽입했다. 이치대로 말하면 501개가 될 것이다. 그러나 이때 조회하면 500개의 데이터만 발견되고 다시 요청하면 501개의 데이터를 얻는다. 이것은 어떻게 된 일입니까?
이 문제는 Elasticsearch가 지연되는 관계가 있기 때문이다.
Elasticsearch가 데이터를 조작한 후 바로 업데이트하는 방법은 쓰기, 업데이트, 삭제 후 바로 업데이트 데이터를 실행합니다. 설정
.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
을 통해 가능합니다.물론 Elasticsearch도 리셋 시간을 설정할 수 있지만 필요없습니다. 빈번한 리셋은 스트레스를 많이 받을 수 있습니다.
예는 다음과 같습니다.
업데이트 후 즉시 데이터 업데이트
UpdateRequest request = new UpdateRequest(ES_INDEX, ES_TYPE, keyId).doc(body, XContentType.JSON);
//
request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
UpdateResponse updateResponse = Proxy.getRestHighLevelClient(host).update(request);
대량 업데이트
public BulkItemResponse[] esBulk(BulkRequest bulkRequest) throws IOException {
long start = System.nanoTime();
//
bulkRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
BulkResponse updateResponse = Proxy.getRestHighLevelClient(host).bulk(bulkRequest);
//
double milliSecondTime = ElapsedTimeUtil.getElapsedTime(start);
Map<String, String> logTags = new HashMap<>();
logger.info("bulkRequest", " :" + milliSecondTime + "/ms", logTags);
BulkItemResponse[] responses = updateResponse.getItems();
return responses;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Embulk를 사용하여 ElasticCloud로 보내기Embulk에서 ElasticCloud에 보낼 수 있을까라고 생각비망록도 겸해 기술을 남깁니다 Embulk 설치 ElasticCloud (14 일 체험판) brew라면 아래 명령 입력 파일 만들기 파일 내용 seed...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.