【问题标题】:Facet counts aren't displaying correct numbers after filtering on a different facet在不同方面过滤后,方面计数未显示正确的数字
【发布时间】:2014-01-24 19:27:12
【问题描述】:

如果您有两个方面,比如说类别和标签,最初计数是正确的,但在过滤其中一个方面后它们不会下降。这个想法是,如果类别 X 中没有带有标签 Y 的记录,并且我们正在按类别 X 进行过滤,那么标签 Y 的构面计数应该为 0。

当然,同一术语(其他类别)中的其他方面计数不会下降,因为它们将是 OR 而不是 AND。

【问题讨论】:

  • 你能发布一个更明确的例子吗?方面查询、文档等。

标签: elasticsearch tire


【解决方案1】:

你是如何过滤你的构面的?像这样?

GET /_search
{
  "query": {.....},
  "filter": { "term": { "some_field": "some_value"}},
  "facets: {.....}
}

如果是这样,那就不足为奇了。顶级filter 参数用于在计算分面后过滤搜索结果。事实上,在 1.0 中它已被重命名为 post_filter 正是因为这种混淆。

您想改用filtered 查询:

GET /_search
{
  "query": {
    "filtered": {
      "query": {.....},
      "filter": { "term": { "some_field": "some_value"}}
    }
  },
  "facets: {.....}
}

【讨论】:

  • 这完全有道理,我假设这是问题所在。但是,如果我这样实现并选择类别 X,所有其他类别的方面计数是否会减少到 0? (为了讨论,我假设事物只有一个类别)
  • 是的——除非我误解了你。更多细节可能会有所帮助?
  • 我有两个过滤器:一个用于标签,一个用于类别。这个想法是相同类型的过滤器应该是相加的,不同类型的过滤器应该缩小结果。因此,如果我对一个类别进行过滤,它仍然会在构面中显示所有可用类别(这很有意义,因为它是可加的),但会根据它们在过滤类别中是否匹配来减少标签计数。这有意义吗??
  • Details = code :) 最好使用“我得到 X(示例)但我期待 Y”。更容易理解
猜你喜欢
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2015-12-13
  • 2015-12-30
  • 2020-01-27
相关资源
最近更新 更多