2017-04-07 3 views
0

이것은 간단 할 수도 있지만 구현하거나 예상 쿼리 형식을 찾을 수 없습니다.elasticsearch에 여러 geopoint가있는 필터

내 응용 프로그램에서 바로 geo_point 데이터 형식의 매핑을 만들 수있었습니다. 또한 요청 본문의 일환으로 다음과 같은 쿼리를 전송하여 GeoPoint의와 인덱스를 쿼리 할 수 ​​있어요 :

여기
{ 
    "query": { 
     "bool" : { 
      "must" : { 
       "match_all" : {} 
      }, 
      "filter" : { 
       "geo_distance" : { 
        "distance" : "5km", 
        "field_location" : "9.0194,-79.4509" 
       } 
      } 
     } 
    } 
} 

, field_location 유형 geo_point이다 필드의 이름입니다. 이것은 완벽하게 작동합니다.

필터에 lat/lon 값을 여러 개 제공 할 수있는 방법을 찾을 수 없으며 필터 사이에 OR을 사용합니다. 쿼리에서 SHOULD을 사용했지만 올바른 방법을 찾을 수 없었습니다. 이것을 달성하는 방법에 대한 조언은 정말 도움이 될 것입니다.

답변

0

내가 올바른 길을 가고있는 것 같습니다. elasticsearch에 대한 Bool query은 연산자를 지원합니다. 나는 그것을 올바르게 사용하지 않고 있었다.

다음 쿼리가 작동합니다

{ 
    "query": { 
     "bool": { 
      "should": [ 
       { 
        "geo_distance": { 
         "distance": "1km", 
         "field_location": "9.0194,-79.4509" 
        } 
       }, 
       { 
        "geo_distance": { 
         "distance": "1km", 
         "field_location": "8.9972,-79.4985" 
        } 
       } 
      ] 
     } 
    } 
}