elasticsearch 문서
elasticsearch 문서
문서 형식
색인에서 가장 기본적인 단원을 문서document라고 합니다.es에서 문서의 예는 다음과 같습니다.
{
"_index": "questions",
"_type": "baichebao",
"_id": "4",
"_score": 1,
"_version" : 1,
"_source": {
"id": 4,
"content": " ?",
"uid": 1,
"all_answer_count": 2,
"series_id": 0,
"score": 0,
"answer_count": 2
}
}
문서에서 밑줄로 시작하는 것은 es 자체 필드입니다.
이곳의 색인, 유형, 문서, 필드의 개념은 많은 문장들이 관계형 데이터의 대비를 한다.
저는 지금 사용자 테이블이 하나 있습니다. 이 사용자 테이블은 type 필드가 있습니다. 0/1은 남자인지 여자인지를 대표합니다. 이 테이블의 모든 데이터는 한 사람을 대표합니다. 이 테이블은 이름, 전화 등 속성을 가지고 있습니다.
es에 대응하면 표는 색인에 해당하고 남녀의 필드는 type에 해당하며 모든 데이터는 하나의 문서이고 명칭 전화 등 속성은 하나의 필드이다.
버전 제어
위에서 볼 수 있는es의 문서 중_버전 필드, 두 개의 동시 요청이 문서를 수정할 때es는 낙관적인 자물쇠를 사용합니다.es에서 업데이트 요청은 사실상 두 단계로 나뉘어 문서를 가져오고 수정한 다음에 문서를 저장합니다.그러면 두 개의 업데이트 요청이 동시에 문서를 수정해야 할 때 시스템은 두 개의 동시 요청이 한 시스템에 대한 조작이 없을 것이라고 낙관한다.
문서의 원래 버전은 1입니다. 요청 A는version이 1인 문서를 가져갔고, 요청 B도version이 1인 문서를 가져갔으며, 요청 A가 문서를 수정한 후에 저장 작업을 먼저 수행했습니다. 이때 시스템의 문서version은 2로 바뀌었습니다.이때 B가 저장 작업을 다시 실행할 때 시스템에version이 1인 문서를 수정해야 한다고 알려 줍니다.문서 버전이 일치하지 않는다고 오류가 발생합니다.그리고 이 오류는 응용 프로그램이 스스로 제어합니다.
이런 메커니즘은 요청량이 많을 때 비관적 잠금 메커니즘보다 좋다.그러나 단점은 프로그램이 버전 충돌 오류를 처리해야 한다는 것이다. 일반적인 방법은 업데이트 작업을 봉인하고 중복 재시도 횟수를 설정하는 것이다.
삭제 수정 작업
증가:
POST /website/blog/ -d
{
id: 123,
name: "blog123"
}
추가 작업 문서가 이미 존재하면 409 오류가 반환됩니다
삭제:
DELETE /website/blog/123
문서가 존재하지 않으면 404로 돌아갑니다.
업데이트:
PUT /website/blog/123
{
"title": "My first blog entry",
"text": "I am starting to get the hang of this...",
"date": "2014/01/02"
}
업데이트할 때 종종 "데이터가 있으면 업데이트하고, 데이터가 없으면 만들기"는 upsert를 사용할 수 있다
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"script" : "ctx._source.counter += count",
"params" : {
"count" : 4
},
"upsert" : {
"counter" : 1 // id 1 , , counter 1
}
}'
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"doc" : {
"name" : "new_name"
},
"doc_as_upsert" : true // , doc
}'
업데이트가 명확한 점은 es의 문서 업데이트 작업이 실제로 두 단계를 수행하여 문서를 가져오고 업데이트한 후에 문서를 저장하는 것이다.
조사:
GET /website/blog/123
만약 당신이 이미 문서 id를 알고 있다면, 대량 검색 기능을 사용할 수 있습니다
GET /_mget
{
"docs" : [
{
"_index" : "website",
"_type" : "blog",
"_id" : 2
},
{
"_index" : "website",
"_type" : "pageviews",
"_id" : 1,
"_source": "views"
}
]
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.