【发布时间】:2016-09-25 17:30:58
【问题描述】:
恐怕我不知道用什么术语来简洁地描述我正在尝试做的事情,但我会解释一下我目前正在做什么以及我想做什么。我正在尝试将两个搜索查询合并到一个查询中,从一个索引中获取地理点数据以使用搜索参数在第二个索引/文档类型中进行搜索。
我目前的 ES 设置:
索引和文档类型:
|- 1) locations
|---- 1a) UK_postcode
|- 2) accounts
|---- 2a) client
每个 Doctypes 都有一个字段名称“位置”,它映射到 GeoPoint 类型。
我目前的流程:
1) 用户根据关键字和与位置的距离(英国邮政编码)搜索客户。
2) 系统获取邮编,搜索匹配结果,从locations.UK_postcode中获取geo_point经纬度数据。
3) 系统使用提供的关键字和经纬度在accounts.client index/doctype上进行搜索。
4) 系统根据 ES 搜索结果向用户返回好看的结果。
我的问题:
可以将第 2 步和第 3 步合并到一个搜索查询中吗?如果是,我该怎么做?我想将邮政编码传递给搜索查询,并让 ES 找到 geo_point 数据,以满足客户端 doctype 上地理距离查询的要求。
【问题讨论】:
-
距离总是一样吗?即,当环顾邮政编码时,您是否总是查看(例如)5 公里的邮政编码位置? (因为我们在谈论
geo_distance) -
不是距离是用户提供的搜索变量。
-
所以他们制定了诸如“让我找到所有名称以 'Comp' 开头并且位于邮政编码 ABC123 周围 11.5 公里的客户”之类的查询?
-
用户如何选择距离?是否有预定义距离的选择列表?
-
他们输入一个代表英里数的浮点数。
标签: elasticsearch