실습 시작 전
elsaticsearch 와 kibana 를 모두 on 해놓기
1. classes라는 index(=db) 가 있는지 확인해보기
curl -XGET http://localhost:9200/classes
// 정리된 상태로 결과물을 보려면 pretty 붙이기
curl -XGET http://localhost:9200/classes\?pretty
{
"error" : {
"root_cause" : [
{
"type" : "index_not_found_exception",
"reason" : "no such index [classes]",
"resource.type" : "index_or_alias",
"resource.id" : "classes",
"index_uuid" : "_na_",
"index" : "classes"
}
],
"type" : "index_not_found_exception",
"reason" : "no such index [classes]",
"resource.type" : "index_or_alias",
"resource.id" : "classes",
"index_uuid" : "_na_",
"index" : "classes"
},
"status" : 404 // -> 페이지를 찾을 수 없음 = 인덱스(db)가 없음
}
2. classes라는 index 생성하기
curl -XPUT http://localhost:9200/classes
{"acknowledged":true,"shards_acknowledged":true,"index":"classes"}%
생성된 index 조회하기
curl -XGET http://localhost:9200/classes\?pretty
{
"classes" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
"number_of_shards" : "1",
"provided_name" : "classes",
"creation_date" : "1649744462934",
"number_of_replicas" : "1",
"uuid" : "HlpDFyhMQlGemJCREGgmMw",
"version" : {
"created" : "7170299"
}
}
}
}
}
3. 방금 생성한 classes 라는 index 삭제해보기
curl -XDELETE http://localhost:9200/classes
{"acknowledged":true}%
4. document 만들어보기
* index 안에 document들을 생성하는 것인데 여기서 index가 있든 없든 상관없다.
index가 없다면 index명과 type명을 명시해주면 된다. (-> 이제 한 index에 하나의 type만 가능해서 type명을 굳이 안적는 듯 하다. )
여기서 -H'Content-Type: application/json' <- 요 옵션이 없으면 아래와같은 에러가 난다.
"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406
Elasticsearch 6.0 이후로는 content-type이 필수가 되었다고 한다.
curl -XPOST http://localhost:9200/classes/1/ -H'Content-Type: application/json' -d ' {"title": "acb", "subject": "def"}'
{"_index":"classes","_type":"1","_id":"Y8p3HIAB0VdubgSLszWG","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}%
5. 해당 document 조회하기
curl -GET http://localhost:9200/classes/_doc/_MqHHIAB0VdubgSLskP1\?pretty
_MqHHIAB~ <-요 부분은 해당 document의 _id
{
"_index" : "classes",
"_type" : "_doc",
"_id" : "_MqHHIAB0VdubgSLskP1",
"_version" : 1,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "acb",
"subject" : "def"
}
}
GET <index>/_doc/<_id>
HEAD <index>/_doc/<_id>
GET <index>/_source/<_id>
HEAD <index>/_source/<_id>
7. 파일을 document으로 저장하기
json 파일을 -> document으로 저장하기
curl -XPOST http://localhost:9200/classes/1/ -d @[file-name].json
8. UPDATE
update할 document 하나 생성하기
curl -XPOST http://localhost:9200/classes/1/ -H'Content-Type: application/json' -d ' {"title": "aaaaa", "subject": "bbbbb"}'
{"_index":"classes","_type":"1","_id":"RsrDHIAB0VdubgSL6Hyy","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":5,"_primary_term":1}%
get으로 조회해보기
curl -GET http://localhost:9200/classes/_doc/RsrDHIAB0VdubgSL6Hyy/\?pretty
{
"_index" : "classes",
"_type" : "_doc",
"_id" : "RsrDHIAB0VdubgSL6Hyy",
"_version" : 1,
"_seq_no" : 5,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "aaaaa",
"subject" : "bbbbb"
}
}
update 로 수정해보기 - field 하나 추가해보기
curl -XPOST http://localhost:9200/classes/1/RsrDHIAB0VdubgSL6Hyy/_update\?pretty -H'Content-Type:application/json' -d ' {"doc": {"content":"ccccc"} }'
{
"_index" : "classes",
"_type" : "1",
"_id" : "RsrDHIAB0VdubgSL6Hyy",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 6,
"_primary_term" : 1
}
successful : 1 (true) 이지만 잘 추가 되었는지 다시 확인해보기
curl -GET http://localhost:9200/classes/_doc/RsrDHIAB0VdubgSL6Hyy/\?pretty
{
"_index" : "classes",
"_type" : "_doc",
"_id" : "RsrDHIAB0VdubgSL6Hyy",
"_version" : 2,
"_seq_no" : 6,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "aaaaa",
"subject" : "bbbbb",
"content" : "ccccc"
}
}
_source 안에 content가 추가되었다.
다시 content 내용을 10 으로 수정해보기
- 추가할 때와 똑같다.
curl -XPOST http://localhost:9200/classes/1/RsrDHIAB0VdubgSL6Hyy/_update\?pretty -H'Content-Type:application/json' -d ' {"doc": {"content":10} }'
curl -GET http://localhost:9200/classes/_doc/RsrDHIAB0VdubgSL6Hyy/\?pretty
{
"_index" : "classes",
"_type" : "_doc",
"_id" : "RsrDHIAB0VdubgSL6Hyy",
"_version" : 3,
"_seq_no" : 7,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "aaaaa",
"subject" : "bbbbb",
"content" : 10
}
}
'Elasticsearch' 카테고리의 다른 글
[Elasticsearch] 연습 (0) | 2022.04.15 |
---|---|
[Elasticsearch + Node.js] index 생성 삭제 조회 bulk CRUD with TypeScript (0) | 2022.04.14 |
[Elasticsearch] node.js로 bulk 입력/업데이트/삭제 Bulk helpers - index, insert, update, delete (0) | 2022.04.14 |
[Elasticsearch + Node.js] with Typescript 연결하기 (0) | 2022.04.13 |
[elasticsearch, kibana] homebrew로 설치하기 on mac 맥북 (0) | 2022.04.12 |