프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

Local에 설치하거나 라이브러리를 사용하는 것이 아니라면, Elastic Search로의 endpoint URL로 직접 요청을 보내야 한다.

이를 위해서 HTTP를 사용한다.

 

(HTTP를 편하게 작성하기 위해서 PostMan를 사용해 보자.)

 

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

 

 

 

 

1. 보안 인증

 

일단 엔드포인트로의 접근을 위해서는 당신의 검증된 유저임을 알려야 한다.

이를 위해 사용하는 것은 Elastic Search의 user의 id와 password이다.

 

이 내용을 HTTP의 Header의 Authorization을 Basic type으로 보내주자.

 

 

 

 

Basic Auth는 간단한 로그인을 위해 자주 사용된다. 하지만 HTTP 데이터가 탈취되면 개인 정보가 바로 노출될 수 있다.

구글링을 해보니 보안을 위해 Base64로 인코딩해서 넘겨주라고 하지만, Base64는 암호화가 아니기 때문에 복호화를 바로 할 수 있다...

공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식이다. -위키-

(사실  Basic Auth 내용은 전송 중 자동으로 Base64로 인코딩해서 넘겨준다고 한다.)

 

 

사실 HTTPS로 보내면 sender와 reciever사이의 연결이 암호화되기 때문에 괜찮다고 볼 수 있다.

 

만약에 한 줄로 만들고 싶다면  "id:password"를 하나의 문자열로 인코딩해주자.

이 인코딩 된 문자열을 Header의 { Authorization : Basic 인코딩문자열}에 명시해 주면 된다.

 

 

 

 

 

 

 

 

2. 엔드포인트와 쿼리 작성

 

 

 

엔드포인트를 확인하면 아래와 같은 URL 형태이다.

(본인은 ElasticCloud를 사용해서 이처럼 나온다. ElasticCloud도 AWS를 사용하는가 보다.)

https://example.es.ap-northeast-2.aws.elastic-cloud.com/

 

 

 

 

간단히 문자열을 쿼리만 한다면, 이처럼 GET 요청을 보내주면 된다.

https://eaxample.endpoint.com/인덱스_이름/_search?q=검색내용

 

 

 

 

만약 복잡한 쿼리내용을 쓰고 싶다면, 동일하게 JSON으로 작성한 후 HTTP의 body에 담아주면 된다.

 

Content-Type을 application/json으로 명시해 주고,

 

 

 

 

쿼리 내용을 작성해 주자.

 

 

 

이번에는 body에 데이터를 담았으므로 아래와 같은 url에 POST 요청을 보내주자.

 

https://eaxample.endpoint.com/인덱스_이름/_search

 

 

 

 

3. Python 코드로 작성하기

 

당연히 쿼리를 PostMan로만 질의할리가 없으니, Python 코드로 작성하면 다음과 같다.

 

 

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함