이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 15452|회답: 0

[출처] ElasticSearch (geo_point)에서의 Java 위치 정보

[링크 복사]
게시됨 2019. 1. 9. 오후 5:25:39 | | |
간략한 소개

ES는 일반적인 기본 데이터 타입 외에도 위치 정보를 기록하는 데이터 타입도 지원한다는 것을 알고 있습니다. ES에서는 위치 정보를 기록하는 두 가지 유형의 데이터가 있는데, geo_shap와 geo_point이며, 아래에서 간략히 geo_point 유형을 소개하겠습니다
geo_point 여러 데이터 전송 방식을 지원합니다:

스트링
위치: 위도 + "," + 경도

배열
위치: {"위도": ...,"lon": ...}

목적
위치: [경도, 경도]


참고: 아마도 모든 사람이 적어도 한 번은 이 구덩이를 밟아본 적이 있을 것입니다 == 지리적 좌표점은 문자열로 표현할 때 위도가 먼저이고 경도가 마지막인 반면('위도, 경도'), 배열은 반대로 표현되어 경도가 먼저이고 위도가 마지막입니다([경도, 위도]). 실제로 Elasticesearch 내에서는 문자열이든 배열 형태든 위도가 먼저이고 경도가 마지막에 옵니다. 하지만 초기에는 GeoJSON의 서식 명세에 적응하기 위해 배열 형태의 표현이 조정되었습니다. 이 내용은 공식 웹사이트에서 설명되어 있습니다.
일반적으로 geo_point 유형에 대한 다음 쿼리 요구사항이 있습니다

거리 쿼리
중심점에서 범위 내의 점을 찾으세요

거리 범위 쿼리 (더 이상 지원되지 않음)
ES의 새 버전에서는 중심점의 지정된 범위 내의 쿼리가 API에서 제거되므로 여기서 자세히 설명하지 않겠습니다
경계 질의(bounding query)
지정된 점으로 이루어진 직사각형 내에서 점들을 찾는다

폴리곤 쿼리
여러 점으로 이루어진 다각형에서 점들을 찾는다

Java에서 다양한 쿼리를 위해 구축된 SearchSourceBuilder 공장은 다음과 같습니다:


운행은 다음과 같습니다:

컨트롤러 계층 코드는 다음과 같습니다:

[1]. 사용 방법

geo_point 타입을 사용하기 전에, 인덱스를 만들 때 먼저 필드를 geo_point 타입으로 명시적으로 지정해야 합니다. 다음과 같습니다:


위에서 restraunt라는 새로운 인덱스를 만들었고, 매핑 파일에서 "location" 필드 유형을 명시적으로 "geo_point"로 지정했습니다

[2] 데이터를 준비하세요

키바나에 관해서는 다음과 같은 데이터를 준비했습니다:


위에 준비한 7개의 데이터를 준비한 후, 인터페이스를 요구에 부합하는지 확인하기 위해 쿼리를 실행해야 합니다.

[3] 조사

쿼리 거리


나머지 두 건의 조사도 위와 동일합니다.




이전의:ElasticsearchParseException[필드는 [lat], [lon] 또는 [geohash]이어야 합니다.
다음:Discuz가 앱을 설치하고 "데이터가 인식되지 않으니 반품해 주세요"라는 우회 방법을 안내합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com