정의
특징
마스터 노드
데이터 노드
마스터 후보 또는 운영되고 있는 서버가 짝수인 경우, 네트워크 단절 등에 이유로 클러스터가 분리되어 데이터 저장 및 변경이 이루어지고 원 상태 복구 후 다시 하나의 클러스터로 병합하는 과정에서 데이터 정합성 문제가 발생되어 데이터 무결성이 유지되지 못하는 상황 또는 문제
Split Brain 방지를 위해서 마스터 후보 노드를 3개로 두고
클러스터에 마스터 후보 노드가 최소 2개 이상 존재하고 있을 때에만
클러스터가 동작하고 그렇지 않은 경우 클러스터는 동작을 멈추도록 해야 함
최소 마스터 후보 개수: (전체 마스터 후보 노드 / 2) + 1
📢 아래부터는 Kibana 환경에서 작업한 내용입니다ㅏㅏㅏ
_create로 작성한 경우 새로 저장PUT index/_doc/1
{}
PUT index/_create/1
{}
GET index/_doc/1
{ query }
# 문서 갯수 조회
GET index/_count
{ query }
_update 요청을 통해 해당 id의 일부 필드만 수정_update 요청 시 해당 id의 데이터가 없을 경우 새로 생성하여 저장# 자동 id 생성 저장
POST index/_doc
{}
# 수정
POST index/_update/1
{}
"result" : "deleted" 결과 반환"found" : false 반환"type" : "index_not_found_exception" , "status" : 404 반환# 데이터
DELETE index/_doc/1
# Index
DELETE index
# 쿼리 실행
POST _bulk
{ "index": { "_index": "test", "_id" :"1" } }
{ "field": "value one" }
{ "index": { "_index": "test", "_id": "2" } }
{ "field": "value two" }
{ "delete": { "_index": "test", "_id": "2" } }
{ "create": { "_index": "test", "_id": "3" } }
{ "field": "value three" }
{ "update": { "_index": "test", "_id": "1" } }
{ "doc": { "field": "value two" } }
# 명령어 파일 실행
$ curl -XPOST "http://localhost:9200/_bulk" -H 'Content-Type: application/json' --data-binary { filename }.json
q 파라미터를 통해 검색어를 입력하여 요청하는 방식# 기본 형태
GET index/_search?q={ value }
# 필드 검색
GET index/_search?q={ field:value }
GET index/_search
{
"qeury": {
"match" : {
{ "field" }: { "value" }
}
}
}
GET logs-2018-01,2018-02,2018-03/_search
GET logs-2018-*/_search
GET index/_search
{
"query": {
"match": { "content": "kimchy" }
},
"highlight": {
"fields": {
"content": {}
}
}
}
# Pagination(from)
# First request
GET products/_search
{
"query": {
"match": {
"name": "bike"
}
},
"size": 10,
"from": 0
}
# Next request
GET products/_search
{
"query": {
"match": {
"name": "bike"
}
},
"size": 10,
"from": 10
}
# Search after
# First request
GET products/_search
{
"query": {
"match": {
"name": "bike"
}
},
"size": 10,
"sort": [
{
"_score": "desc"
},
{
"id.keyword": "asc"
}
]
}
# Next request
GET products/_search
{
"query": {
"match": {
"name": "bike"
}
},
"size": 10,
"sort": [
{
"_score": "desc"
},
{
"id.keyword": "asc"
}
],
"search_after": [
0.2876821,
"1"
]
}
# Create PIT for index
POST products/_pit?keep_alive=2m
# First page
GET _search
{
"from": 0,
"size": 10,
"query": {
"match": {
"name": "bike"
}
},
"pit": {
"id": "85ezAwEIcHJvZHVjdHMWSzJZVTdKOU1RLU9SRVBsck43SGg3dwAWS3ptRzhJX3FUZE9iaGVpY3J5VmhTdwAAAAAAAAAABxZVYm5aNWF2U1NqcWJJdXhPc1dyS2hBAAEWSzJZVTdKOU1RLU9SRVBsck43SGg3dwAA",
"keep_alive" : "2m"
}
}
# Following page
GET _search
{
"from": 10,
"size": 10,
"query": {
"match": {
"name": "bike"
}
},
"pit": {
"id": "85ezAwEIcHJvZHVjdHMWSzJZVTdKOU1RLU9SRVBsck43SGg3dwAWS3ptRzhJX3FUZE9iaGVpY3J5VmhTdwAAAAAAAAAABxZVYm5aNWF2U1NqcWJJdXhPc1dyS2hBAAEWSzJZVTdKOU1RLU9SRVBsck43SGg3dwAA",
"keep_alive" : "2m"
}
}
# First request
GET products/_search?scroll=1m
{
"size": 10,
"query": {
"match": {
"name": "bike"
}
}
}
# Next request
GET _search/scroll
{
"scroll": "1m",
"scroll_id": "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFlViblo1YXZTU2pxYkl1eE9zV3JLaEEAAAAAAAAAChZLem1HOElfcVRkT2JoZWljcnlWaFN3"
}
동기님의 정리글을 인용했습니다~ 감사요~