- 查询地理形状
查询地理形状
地理形状一个不寻常的地方在于它运行我们使用形状来做查询,而不仅仅是坐标点。
举个例子,当我们的用户刚刚迈出阿姆斯特丹中央火车站时,我们可以用如下方式,查询出方圆1km内所有的地标:
GET /attractions/landmark/_search{"query": {"geo_shape": {"location": { <1>"shape": { <2>"type": "circle", <3>"radius": "1km""coordinates": [ <4>4.89994,52.37815]}}}}}
- <1> 查询使用
location字段中的地理形状; - <2> 查询中的形状是由
shape键对应的内容表示; - <3> 形状是一个半径为1km的圆形;
- <4> 安姆斯特丹中央火车站入口的坐标点。
默认,查询(或者过滤器 —— 工作方式相同)会从已索引的形状中寻找与指定形状有交集的形状。
此外,relation 也可以设置为 disjoint来查找与指定形状不相交的,或者设置为within来查找完全落在查询形状中的。
举个例子,我们查找所有落在阿姆斯特丹内的地标:
GET /attractions/landmark/_search{"query": {"geo_shape": {"location": {"relation": "within", <1>"shape": {"type": "polygon","coordinates": [[ <2>[4.88330,52.38617],[4.87463,52.37254],[4.87875,52.36369],[4.88939,52.35850],[4.89840,52.35755],[4.91909,52.36217],[4.92656,52.36594],[4.93368,52.36615],[4.93342,52.37275],[4.92690,52.37632],[4.88330,52.38617]]]}}}}}
- <1> 只匹配完全落在查询形状中的(已索引)形状。
- <2> 这个多边形表示安姆斯特丹中心。
