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/
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 코드로 작성하면 다음과 같다.
'개발 > Elastic Search' 카테고리의 다른 글
Elastic Search 페이징(search after) 활용하기 (0) | 2023.12.13 |
---|---|
Elastic Search 날짜(거리)로 Score 계산하기 (0) | 2023.12.12 |
Elastic Search 구조 간단 이해 (0) | 2023.07.12 |