2016-10-13 4 views
1

내 elasticsearch에서 매핑을 다음 있습니다 :탄성 검색 2.4 geohash와 세포 쿼리

{ 
    "mappings": { 
    "event": { 
     "_all":  { "enabled": false }, 
     "properties": { 
     "type":  { "type": "string", "index": "not_analyzed"}, 
     "id": { "type": "string"}, 
     "location": { "type": "geo_point"} 
     } 
    } 
    } 
} 

내가 뭘 원하는 것은 하나의 geohash와에 의해 정의 된지도 지역 내에서 지역화 된 모든 레코드에 대한 쿼리입니다. 내 예제에서 완벽하게 작동하는 geohash 셀 쿼리를 알고 있지만 unfortunatelly geo_point 필드를 geohash_prefix 옵션이 true로 설정된 indexed로 지정해야합니다.이 옵션은 elasticearch 2.4에서 사용되지 않습니다.

최신 elasticsearch 버전에서 올바른 방법은 무엇입니까? 문서 어디서나 찾을 수 없습니다.

답변

1

Elasticsearch 6.0.0 - 알파 2 documentation says 다음

geohash_cell 쿼리가 제거되었습니다. 대신 your_geohash_prefix + '00...0'으로 bottom_leftbounding box 인수 및 your_geohash_prefix + 'zz...z'top_right을 지정하는 지리적 경계 상자 쿼리를

시도를 사용합니다. geohash 접두사에 0z 기호를 추가하여 길이 12 (최대 정밀 geohash 길이)가되도록합니다.

예. geohash와 그리드의 하위로 촬영

{ 
    "query": { 
     "bool" : { 
      "must" : { 
       "match_all" : {} 
      }, 
      "filter" : { 
       "geo_bounding_box" : { 
        "coordinates" : { 
         "bottom_left" : "dr5r90000000", 
         "top_right" : "dr5r9zzzzzzz" 
        } 
       } 
      } 
     } 
    } 
} 

0z는 오른쪽 상단 모서리 각각 왼쪽 : 같은 geohash와 접두사 dr5r9 것이 보일 것이다.

일치하는 문서 수를 해당 정밀도의 geohash 그리드 집계 결과와 비교하여 테스트하는이 접근 방식에 성공했습니다. 그러나 아직도 나는 몇몇 점이 그런 경계 상자로 빠지지 않았었다 몇몇 케이스가 있었다. 그것은 100 % 올바른 방법이라고 말할 수 없습니다.