---
# System prepended metadata

title: 엘라스틱 서치 좌표값 기준 쿼리
tags: [tech sharing]

---

# 엘라스틱 서치 좌표값 기준 쿼리

###### tags: `tech sharing`

### 인덱스 맵핑 추가
- 아래와 같이 인덱스에 geo_point라는 타입으로 맵핑해준다.
- 맵핑을 따로 해주지 않을 경우 float타입으로 필드가 생성되기 때문이다
```
location : {
type: geo_point
}
```

### 좌표 기준 쿼리문 작성
- 입력된 lat, lon 을 기준으로 5km 이내에 위치한 값들만 반환한다.
```
 "query": {
    "geo_distance": {
      "distance": "5km",
      "location": {
        "lat": 37.5358,
        "lon": 126.9559
      }
    }
  }
```
- 우측 아래 의 좌표와 좌측 위의 좌표를 통해 사각형을 만들고 그안의 값들을 반환하는 쿼리
```
"query": {
    "geo_bounding_box": {
      "location": {
        "bottom_right": {
          "lat": 37.4899,
          "lon": 127.0388
        },
        "top_left": {
          "lat": 37.5779,
          "lon": 126.9617
        }
      }
    }
  }
```

### 결론
- 이를 활용해 현재 사용자 위치기반으로 검색기능을 사용할 수 있을 것 같다.

### 문제
- serversideProps로 데이터를 받아올 수가 없을 것 같다. 사용자의 위치를 어떻게 받아올 것인가?

[엘라스틱서치 공식문서](https://esbook.kimjmin.net/07-settings-and-mappings/7.2-mappings/7.2.6-geo)