elasticsearch 학습노트(14)-Elasticsearch partial update 실현 원리와 실천
2189 단어 elasticsearch
PUT /{index}/{type}/{id}
{}
일반적으로 응용 프로그램에 대응하는데 매번 실행 절차는 기본적으로 다음과 같다. (1) 응용 프로그램이 먼저 get 요청을 시작하여document를 얻고 프론트 인터페이스에 보여줌으로써 사용자가 프론트 인터페이스에서 데이터를 수정하고 프론트 데스크톱에 보내면 (3) 프론트 코드는 사용자가 수정한 데이터를 메모리에서 실행한다.그리고 수정된 전량 데이터를 봉인하고 (4) PUT 요청을 ES에 보내면 전량 교체 (5) ES는 오래된 문서를deleted로 표시하고 새 문서를 만듭니다.
이전 절차의 한 가지 문제는 데이터를 수정할 때마다 교체하기 때문에 매번 가지고 있는 필드는 수정할 필드를 포함할 뿐만 아니라 다른 모든 필드를 가지고 가야 한다는 것이다.이 점을 겨냥하여 ES에 partial update가 생겼다.형식은 다음과 같습니다.
POST /{index}/{type}/{id}/_update
{
"doc": {
" "
}
}
이렇게 하면 보기에 매우 편리한 것 같다. 매번 수정할 때마다 수정된 필드 몇 개만 전송하면 되고, 전량의document 데이터를 보낼 필요가 없다.
partial update 실현 원리 및 장점
partial update 실현 원리: 본질적으로 말하자면 그의 실현 원리는 전통적인 전량 교체 방식과 거의 같다.과정은 다음과 같다. (1) 내부에서document를 먼저 얻는다. (2) 전달된field를document의 json에 업데이트한다. (3) 낡은 document를deleted로 표시한다. (4) 수정된 새로운 document를 만든다. 본질이 똑같다고 하면 전통적인 방식에 비해 좋은 점은 어디에 있는가?비교한 후에 다음과 같은 장점을 발견하기 어렵지 않다. (1) 모든 조회, 수정, 쓰기 작업은 ES의 하나의shard 내부에서 발생한다. 전통적인 전량 교체가 메모리에 조작을 넣는 방식에 비해 모든 네트워크 데이터 전송의 비용을 피하고 성능을 크게 향상시켰다. (2) 조회와 수정의 시간 간격을 줄이고 충돌하는 상황을 효과적으로 줄일 수 있다.
PUT /test_index/_doc/3
{
"test_field1": "test1",
"test_field2": "test2"
}
GET /test_index/_doc/3
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "3",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"test_field1" : "test1",
"test_field2" : "test2"
}
}
POST /test_index/_update/3
{
"doc": {
"test_field2" : "update test2"
}
}
GET /test_index/_doc/3
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "3",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"test_field1" : "test1",
"test_field2" : "update test2"
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.