2

我很好奇是否有办法查询 ElasticSearch,以便它返回各种 fascets 的最佳结果。例如,假设我们有一些用户在写推文,

user: kimchy
user_eye_color: blue
tweet: elasticsearch training early bird discounts

# Lots of other message from blue eye color users mentioning 'bird'

user: lord_oliver
user_eye_color: amber-green
tweet: vanquished and consumed the twitter bird. today is a good day.

如果有足够多的blue眼睛用户(或比 更常见的其他颜色amber-green)在推文中提到“鸟”,则搜索“鸟”将永远不会出现 Oliver 勋爵的推文,即使 Oliver 勋爵的推文得分相当高。

这是一个问题,因为 [在这个假设的例子中],我想展示来自不同用户的结果。当前的一种解决方案是在眼睛颜色上添加刻面,

facets:
  eye_color:
    terms: {"field": "user_eye_color"}

然后执行多个过滤搜索。然而,这似乎相当低效。

问题user_eye_color=amber-green:在ElasticSearch中是否有任何方法可以返回多个结果集,或者通过从不同方面(在本例中为

我为什么要这样做的理由是有时很难对所有搜索结果进行总排序(浮点分数)。假设所有amber-green眼睛颜色的用户碰巧都是猫,他们写了不同类型的文档(推文)。与其试图强制所有 cat 编写的文档与所有文档完全一致,我想要帕累托最优文档——那些在X-eye-color 类别中最优的文档。然后我可以做更明智的后过滤,例如,如果没有什么好东西,就丢弃 cat 编写的文档,否则对结果进行某种明智的交错。降低某种分数乘数 [基于眼睛颜色] 可能不太有效。

如果您不喜欢我的玩具示例(或其卑鄙的讽刺),请考虑您拥有具有不同文档类型的索引的情况,例如推文和 FBI 报告...

4

1 回答 1

4

现在可以使用top hits aggregation来完成。

于 2012-12-31T15:53:33.837 回答