# 엘라스틱 서치 좌표값 기준 쿼리
###### 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)