Я пытаюсь отфильтровать данные как с географическим расстоянием, так и с полями «has_cctv» или «has_instant_bookings».Фильтрация ElasticSearch с геоданным
{
"query" : {
"filtered" : {
"filter" : {
"geo_distance": {
"distance": 10000,
"lat_lng": {
"lat": "51.5073509",
"lon": "-0.1277583"
}
}
}
}
}
}
Я пробовал много комбинаций фильтрации с использованием терминов, но, похоже, не мог пройти мимо ошибок. Например:
{
"query" : {
"filtered" : {
"filter" : {
"terms": [
{"term": {"has_cctv": 1}}
],
"geo_distance": {
"distance": 10000,
"lat_lng": {
"lat": "51.5073509",
"lon": "-0.1277583"
}
}
}
}
}
}
Это дает мне "[термины] фильтр не поддерживает [has_cctv] в пределах поиска элемента. Может быть, это проблема с моим запросом или проблема с тем, как хранятся данные?
Я написал запрос для одного соответствия терминов. Если у вас есть несколько условий, вы можете записать булев запрос типа: "запрос": { "BOOL": { "сусло": [ { "термин": { "has_cctv": { "значение": 1 } } } ], "должен": [ { "термин": { "has_instant_bookings": { "значение": 1 } }} ] } } –
Ваш комментарий под этим пост решил это, большое вам спасибо! Возможно, вам захочется обновить исходный ответ для всех, у кого есть подобная проблема, может увидеть ответ немного яснее. –