2014-10-14 2 views
1

Я пытаюсь получить ближайшие места в текущем местоположении со следующим запросом, и он работает очень хорошо.Комбинировать отфильтрованный и bool-запрос

{ 
    "from": 0, 
    "size": 3, 
    "query": { 
    "filtered": { 
     "query": { 
     "matchAll": {} 
     }, 
     "filter": { 
     "exists": { 
      "field": "pin" 
     } 
     } 
    } 
    }, 
    "sort": [ 
    { 
     "_geo_distance": { 
     "pin": { 
      "lat": 52.51515, 
      "lon": 13.38019 
     }, 
     "order": "asc", 
     "unit": "km", 
     "distance_type":"arc" 
     } 
    } 
    ] 
} 

Кроме того, я хочу, чтобы объединить запрос выше, с запросом BOOL, потому что я не хочу иметь текущее местоположение (который является ближайшим одной из причин данные для _geo_distance является текущее расположение данных) в мой список результатов. Я знаю, что я мог бы просто установить от 1 до 4, но я хочу знать, как объединить запрос выше с bool one.

"bool": { 
     "must_not": [ 
     { 
      "query": { 
      "matchAll": { 
       "slug": "adlon-hotel" 
      } 
      } 
     } 
     ] 
    } 

Я просто прочитал документы, но я не копировал, как объединить оба запроса.

спасибо.

ответ

1

Я просто ответил ему сам

{ 
    "from": 0, 
    "size": 3, 
    "query": { 
    "filtered": { 
     "query": { 
     "bool": { 
      "must_not": [ 
      { 
       "match": { 
       "slug": "adlon-hotel" 
       } 
      } 
      ] 
     } 
     }, 
     "filter": { 
     "exists": { 
      "field": "pin" 
     } 
     } 
    } 
    }, 
    "sort": [ 
    { 
     "_geo_distance": { 
     "pin": { 
      "lat": 52.51515, 
      "lon": 13.38019 
     }, 
     "order": "asc", 
     "unit": "km", 
     "distance_type": "arc" 
     } 
    } 
    ] 
} 

и убедитесь, что «тихоход» не анализируется.