2017-12-15 4 views
1

나는 ElasticSearch에 동일한 색인을 공급하는 두 개의 서로 다른 Spark 작업을 사용하여 특정 필드 집합을 채우고 다른 접미사는 나머지 데이터와 인덱스를 채 웁니다.ElasticSearch Upsert 또는 내 사례가 올바른 색인을 만드시겠습니까?

제 질문은 색인을 사용해야하나요 (대답은 '아니오'라고 생각합니다. 첫 번째 직업 AFAIK의 데이터가 느슨합니다) 또는 업서 트합니까?

upsert (지금 당장 사용하고있는 버전) 인 경우 FORCE/INTERNAL 버전 유형을 허용합니다. 이론적으로 FORCE는 사용하지 않아야합니다. 간단한 테스트 관점.

내부 버전을 사용하려고하면 현재 버전이 -1이고 버전을 1로 설정하려고합니다. 버전을 -1로 설정하면 FORCE 대신 INTERNAL을 사용하는 것이 안전합니까?

답변

0

당신은 첫 번째 경우를 들어 사용 사례 read more

에 대한 upsert 사용할 수있는 문서가 그냥 문서에 값을 추가합니다 존재하는 경우는 두 번째 아니라면, 그것은 인덱스를 삽입합니다.

+0

내가 가진 문제점은 upsert를 사용할 때마다 업데이트되는 데이터가 항상 언급 된 버전 충돌 오류 ("버전 충돌, 현재 버전 [-1]이 (가) 제공된 [1]과 다릅니다)")를 던지고 있다는 것입니다. FORCE에 버전 관리 유형을 설정하는 경우를 제외하고는 doc에 따라 피해야합니다. – Samuel

+0

한 문서에서 병렬 업데이트를 수행하는 경우에만 발생합니다. FORCE를 사용하면 데이터가 엉망이 될 수 있습니다. 나는 문서가 업데이트되고 동일한 문서가 다른 프로세스에 의해 병렬로 열리면 버전 오류가 발생합니다. –

+0

테스트 결과, 업데이트가 병렬로 실행되고 있지 않습니다. 일반적으로 두 번째 작업은 몇 초 후에 실행됩니다. 그럴 경우 재심이 충분할 것입니다. 그렇지 않습니까? – Samuel

관련 문제