【发布时间】: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