1. Index, Type, Document
Cluster는 node들의 집합이고 노드는 shard로 구성되며 데이터는 shard로 분산되어 저장.
Index(DB)는 1개 이상의 primary shard에 매핑되고 0개 이상의 replica shard를 가질 수 있는 논리적 이름 공간을 말하며, RDBMS의 DB와 같은 개념
Type(Table)
Document(row): 실제로 검색할 데이터
Restful API를 통해 index에 document를 추가 = '문서를 색인화한다'
이를 위해서는 index가 어떤 type인지, _id를 지정해주어야 함.
_id = pk
PUT /index/type/_id
PUT /customer/external/1?pretty
{
"name": "John Doe"
}
# {} = document
1) 클러스터에 존재하는 모든 index 조회
[GET]
# http://localhost:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
아무런 데이터가 없음을 알 수 있음.
2) index 추가
[PUT]
http://localhost:9200/customer //customer이라는 인덱스 추가
//결과
{
"acknowledged": true, //작업 성공
"shards_acknowledged": true,
"index": "customer"
}
'http://localhost:9200/_cat/indices?v'의 경우, customer index가 잘 생성되었음을 알 수 있다.
3. document 추가
{
"_index": "customer2",
"_type": "info",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
앞에까지 customer2 index, info type는 생성하지 않았다.
index와 type을 자동으로 생성하면서 색인화가 되었다는 걸 알아야 한다.
+ 아까 /1로 _id값을 명시해주었는데,
명시하지 않으면 이상한 값이 나온다.
.json을 반복적으로 하고 싶으면
data.json에 원하는 내용을 넣고,
# curl -XPOST 'localhost:9200/customer2/info/2?pretty' -H 'Content-Type: application/json' -d @data.json
-> @경로를 넣으면 된다.
4. document 조회
1) customer2 index의 모든 document 조회
[GET]
http://localhost:9200/customer2/_search
-> 모든 row 즉 document가 나온다.
2) 모든 index에서 모든 document 조회
[GET]
http://localhost:9200/_all/_search
3) id 이용해서 document 검색
[GET]
http://localhost:9200/customer2/info/1
4) 실제 데이터인 _source만 보고 싶을 때
[GET]
# http://localhost:9200/customer2/info/2?filter_path=_source.name
5. Document 수정
# curl -XPUT 'localhost:9200/customer2/info/1?pretty' -H 'Content-Type: application/json' -d '{
"name": "victolee_update"
}'
6. index, document 삭제
- 특정 id의 document 삭제
[DELETE]
# http://localhost:9200/customer2/info/1
- index 삭제
[DELETE]
# http://localhost:9200/customer2
'백엔드' 카테고리의 다른 글
[스파르타코딩클럽]웹개발의 봄, Spring 2주차 개발일지 (0) | 2021.09.10 |
---|---|
[스파르타코딩클럽]웹개발의 봄, Spring 1주차 개발일지 (0) | 2021.09.10 |
Elastic Search#2 (0) | 2021.05.31 |
[macOS]Elastic Search 설치(brew) (0) | 2021.05.30 |
Elastic Search#1 (0) | 2021.05.29 |