ElasticSearch 근거_seq_no 동시 제어

2569 단어 ElasticSearch

결론


작업 전 현재 데이터의 _seq_no,_primary_term 값, 예를 들어 각각 0과 1이 업데이트될 때 URL에 if_를 끼워주세요.seq_no=0&if_primary_term=1은 이 값에서만 업데이트를 진행할 수 있음을 가리키며, 그렇지 않으면 오류를 되돌려줍니다.

케이스

  1: 
website/blog/1/_create
{
  "title": "My first blog entry",
  "text":  "Just trying this out..."
}
 _seq_no _primary_term 
"_seq_no": 0,
"_primary_term": 1

2단계: 동시 제어 데이터 가져오기 website/blog/1 반환값 { "_index": "website", "_type": "blog", "_id": "1", "_version": 1, "_seq_no": 0, // 여기 보기 "_primary_term": 1,// 여기 주의 "found": true, "_source": { "title": "My first blog entry", "text": "Just trying this out..." } }

3단계: 업데이트 데이터 추가 기준 website/blog/3?if_seq_no=0&if_primary_term=1 대충 if_만seq_no 및 if_primary_term은 우리의 값과 같을 때 업데이트를 진행합니다 반복 작업 회보 { "error": { "root_cause": [ { "type": "version_conflict_engine_exception", "reason": "[3]: version conflict, required seqNo [0], primary term [1]. current document has seqNo [3] and primary term [1]", "index_uuid": "hqx20LnrTgiOykvXMLw-dQ", "shard": "0", "index": "website" } ], "type": "version_conflict_engine_exception", "reason": "[3]: version conflict, required seqNo [0], primary term [1]. current document has seqNo [3] and primary term [1]", "index_uuid": "hqx20LnrTgiOykvXMLw-dQ", "shard": "0", "index": "website" }, "status": 409 }

주의하다


es에 대한 수정은 모두 무질서하기 때문에 병발적인 문제를 초래할 수 있다.이때 저희가 es를 조작할 때 통과할 수 있습니다_seq_이 es 자체 필드 제어 주의: 일부 오래된 버전의 es는version을 사용하지만 새 버전은 지원하지 않습니다. 이 오류를 보고하고 if_seq_no 및 if_primary_term
{
    "error": {
        "root_cause": [
            {
                "type": "action_request_validation_exception",
                "reason": "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;"
            }
        ],
        "type": "action_request_validation_exception",
        "reason": "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;"
    },
    "status": 400
}

좋은 웹페이지 즐겨찾기