Elasticsearch - фильтр запроса geo_distance - PullRequest
0 голосов
/ 25 мая 2018

У меня есть тип отображения с двумя полями: location (geo_point) и type (short).

Я хочу перечислить свои места по географической близости и использовать этот тип запроса

{
"query": {
    "bool": {
        "filter": {
            "geo_distance": {
                "distance": "20km",
                "location": {
                    "lat": 48.856614,
                    "lon": 2.3522219
                }
            }
        }
    }
},
"aggs": {
    "types": {
        "terms": {
            "field": "type"
        }
    }
},
"post_filter": [],
"page": 1,
"size": 50,
"sort": [
    {
        "_geo_distance": {
            "location": {
                "lat": 48.856614,
                "lon": 2.3522219
            },
            "order": "asc",
            "unit": "km",
            "distance_type": "plane"
        }
    }
]
}

Можно ли включить только первые 2 места специального типа (например, type = 2)?

1 Ответ

0 голосов
/ 25 мая 2018

Добавить еще одно предложение к фильтру, например

{
"query": {
"bool": {
    "filter": [{
        "geo_distance": {
            "distance": "20km",
            "location": {
                "lat": 48.856614,
                "lon": 2.3522219
            }
        }
    },
    { 
     "term": {"type":"2"}
    }]
}
},
"aggs": {
"types": {
    "terms": {
        "field": "type"
    }
 }
},
"post_filter": [],
"page": 1,
"size": 2,
"sort": [
{
    "_geo_distance": {
        "location": {
            "lat": 48.856614,
            "lon": 2.3522219
        },
        "order": "asc",
        "unit": "km",
        "distance_type": "plane"
    }
}
]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...