具有不同限制的Elasticsearch索引搜索


Elasticsearch index search with different limits

当人们使用下拉菜单时,我使用弹性搜索来为他们提供服务。到目前为止,一切都很好。现在,我正试图弄清楚是否有可能从不同类型中使用不同的排序/过滤器/限制进行搜索。

到目前为止,我已经找到了每种类型和排序的不同过滤器。我已经用布尔查询实现了不同的过滤器,使用should和排序取决于分数。我的目标是显示总共10行,其中8行应该是产品,2行应该是类别。对于类别,此限制应为最大值,如果没有要显示的类别,则应显示10个产品。我已经阅读了文档,我可以看到大小可以设置为像查询正文一样排序。但排序有更大的灵活性。所以,是的,问题是关于极限——有办法实现它吗?

您想要的似乎是字段折叠或分组。

Elasticsearch问题跟踪器上有一张长期未完成的此功能的门票:https://github.com/elasticsearch/elasticsearch/issues/256,最新更新为(来自http://www.elasticsearch.com/blog/from-amsterdam-with-love-elasticsearchs-second-company-all-hands/)虽然正在取得进展,但在1.0发布之前不会取得进展:

我们再次充实了在分布式环境执行中正确支持字段折叠所需的内容,以及获取内部命中率的能力(对于嵌套/父子案例)。我们对搜索执行基础设施中需要的重构类型有一个很好的想法,并希望在1.0之后解决它。

在添加此功能之前,您最好的选择是执行多个搜索,并使用Damien建议的多搜索api以您想要的方式组合它们的结果。这意味着为每个所需的组构建一个搜索请求(在您的情况下,为每个搜索设置索引/类型),并解析返回的JSON类型。