【问题标题】:How can I take n-documents for each query in a nested query?如何在嵌套查询中为每个查询获取 n 个文档?
【发布时间】:2014-12-03 07:35:10
【问题描述】:

我目前有一个文档类型,它在 Elasticsearch 中存储了一个字符串标识符数组。我现在想一次搜索许多有价值标识符的公司——这很容易,我只需要通过提供所有标识符的组合列表来告诉 ES 匹配 any 的标识符.

现在,我想告诉 ES 匹配每组标识符的 5 个文档。例如,如果我存储了以下项目:

{ text: "Goodbye!", Identifiers: [q]}
{ text: "So long!", Identifiers: [a]}
{ text: "Goodnight!", Identifiers: [a, z]}
{ text: "See you tomorrow!", Identifiers: [b, r]}
{ text: "Farewell!", Identifiers: [c, b, d, m]}

我想提供几个查询,并且每个查询只为每个组返回 1 个元素。因此,如果我搜索分组的项目(并不真正关心重叠):

[d], [b, z, r], [d, r]

我希望能回来:

{ text: "Farewell!", Identifiers: [c, b, d, m]}
{ text: "Goodnight!", Identifiers: [a, z]}
{ text: "See you tomorrow!", Identifiers: [b, r]}

第一个,因为它在d 上匹配,第二个因为它在z 上匹配,第三个因为它在b 上匹配。

这完全可以在一个查询中执行,还是我必须每组查询一次才能实现这一点?

【问题讨论】:

  • 我没有完全理解您要做什么,但也许您可以使用带有 OR 的布尔查询,然后将每个组设为子查询。
  • 我实际上是在尝试执行您刚才所说的操作,但不是在 whole 查询中设置“1”的“接受”,而是想要“接受”每个子查询上的“1”。

标签: elasticsearch


【解决方案1】:

使用mulitsearch 允许您在每个查询中搜索n 个文档。

【讨论】:

    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2021-02-25
    • 2016-08-16
    相关资源
    最近更新 更多