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

 

https://velog.io/@broccoliindb/elasticsearch-index-%EC%83%9D%EC%84%B1-%EC%82%AD%EC%A0%9C-%EC%88%98%EC%A0%95-%EB%85%B8%EB%A6%AC-%ED%86%A0%ED%81%B0-%EC%84%A4%EC%A0%95

 

https://myhappyman.tistory.com/218