我们有一个应用程序,您可以按照'Ford Mustang'和'Fly Rod'等关键字进行操作。但是,当您按照关键字时,可以为其指定范围距离。例如,您可能愿意为“1969年福特野马”旅行500英里,但您可能只愿意为“飞杆”行驶20英里。
我正在尝试找出最佳类型的查询及其结构,以便我们可以说出以下内容。
1。)取出所有后续短语并从距离小于或等于最大距离的文档中拉回结果。
我可以关注这些短语。
短语:1969年Ford Mustang
距离:800英里
短语:Fly Rod
距离:20英里
短语:2015 F-150
距离:300英里
我们正在尝试使用单个ElasticSearch查询来撤回所有结果。有没有人有一个如何做这样的事情的例子?我试图使用QueryString,但这不允许你按距离过滤或做任何类型的分页,这两者都是一个要求。
我也尝试了一个multi_match,但是会对单词进行OR操作,所以如果我关注'Fly Rod'它会返回带有'Hot Rod'的文件而我们不希望这样。它似乎返回它们,因为multi_match在查询关键字上使用OR。
这是在向全世界发布网站之前的最后一个主要障碍,但是通过查看所有不同的查询类型,我无法看到它将如何完成。
如果有人有一个如何用ElasticSearch完成这样的事情的例子,我会很感激方向/反馈。我不害怕阅读文档或教程我只是无法找到与此情况相关的任何内容。
我们需要在查询中使用距离和短语。我可以看到这个工作的唯一方法是对每个后续短语进行单一查询,但出于性能原因这是不可接受的。我可以很容易地遵循100-1000个短语,即使ES非常快,很多查询也会花费太多网络时间来提高性能。