Elasticsearch
Elasticsearch CRUD
illho
2024. 3. 16. 13:04
Elasticsearch GET, POST, PUT, DELETE 를 먼저 실습해보고자 한다.
실습환경: elasticsearch 8.12.2 , gitbash
1. Index 만들기
명령어
$ curl -XPUT http://localhost:9200/sport?pretty
결과
2. Index 조회하기
명령어
$ curl -XGET http://localhost:9200/sport?pretty
결과
pretty는 search 의 결과를 보기좋게 출력해주는 파라미터이다.
3. Index 삭제하기
명령어
$ curl -XDELETE http://localhost:9200/sport?pretty
결과
다시 조회 해보면 아래의 이미지와 같이 404 에러를 띄우는걸 확인할 수 있다.
4. Document 만들기
명령어
curl -XPUT http://localhost:9200/sport/_doc/1 -H "Content-Type: application/json" -d '{ "name": "soccer", "message1" : "soccer good" }'
결과
5. document 조회하기
명령어
curl localhost:9200/sport/_doc/1?pretty=true
결과
6. DOCUMENT에 추가생성하기: POST
명령어
curl -XPOST http://localhost:9200/sport/_doc?pretty=true -H "Content-Type: application/json" -d '{ "name": "baseball", "message1" : "baseball good" }'
결과
조회 해보면 아래와 같이 document에 2개의 데이터가 들어가있다.
명령어에 json 형식을 입력하지않고 json 파일을 만들어서 json 파일명을 입력하면 그 파일 내용 데이터가 들어간다.
명령어
$ curl -XPOST http://localhost:9200/sport/_doc/3 -H "Content-Type: application/json" -d @test.json
결과
7. DOCUMENT의 동일 id doc 엎어치기 : PUT
동일 id로 put 요청을 하게되면 데이터는 updated 된다.
명령어
curl -XPUT http://localhost:9200/sport/_doc/1 -H "Content-Type: application/json" -d '{ "name": "tennis", "message1" : "tennis good" }'
결과
8. DOCUMENT의 동일 id가 없을시만 doc의 추가입력: _create
7번처럼 데이터를 엎어칠 수 있으므로 해당 id가 없는 경우에만 PUT 입력이 되도록 할 수 있다.
명령어
$ curl -XPUT http://localhost:9200/sport/_create/1 -H "Content-Type: application/json" -d '{ "name": "soccer", "message1" : "soccer good" }'
결과
8. doc에 여러개의 필드가 있는경우 원하는 필드만 업데이트하기 : POST , _update
명령어
$ curl -XPOST http://localhost:9200/sport/_update/2 -H "Content-Type: application/json" -d '{ "doc": { "message1" : "soccer goodgood" }}'
결과
9. DOCUMENT 삭제하기
명령어
$ curl -XDELETE localhost:9200/sport/_doc/1?pretty=true
결과
10. index settings 수정방법
index는 생성후에 직접 수정하지 않고 아래 절차에 따라 변경이 된다.
1. 새로운 index를 만든다.
2. 새로운 index에 elasticsearch 데이터를 밀어넣는다.
3. alias 를 세팅한다.
4. 기존 인덱스르 삭제한다.
새로운 index를 만들었다.
_reindex를 사용해서 이전 index 데이터를 새로운 index로 넣는다
명령어
$ curl -XPOST localhost:9200/_reindex?pretty=true -d '{"source":{"index": "sport"}, "dest":{"index":"sport_2"}}' -H "Content-Type:application/json"
결과
11. 한번에 데이터 여러개 넣기 _bulk
json 파일에 여러개의 json 형식을 만들었다.
명령어
$ curl -XPOST http://localhost:9200/sport/_bulk?pretty -H "Content-Type: application/json" --data-binary @test.json
Reference