elasticsearch 刻面计数为';t在不同方面过滤后显示正确的数字,elasticsearch,tire,elasticsearch,Tire" /> elasticsearch 刻面计数为';t在不同方面过滤后显示正确的数字,elasticsearch,tire,elasticsearch,Tire" />

elasticsearch 刻面计数为';t在不同方面过滤后显示正确的数字

elasticsearch 刻面计数为';t在不同方面过滤后显示正确的数字,elasticsearch,tire,elasticsearch,Tire,如果你有两个方面,比如说类别和标签,一开始计数是正确的,但在过滤其中一个方面后,计数不会下降。其思想是,如果类别X中没有带标记Y的记录,并且我们按类别X进行筛选,那么标记Y的方面计数应该为0 当然,同一术语(其他类别)中的其他方面计数不会下降,因为它们是OR而不是AND 你是如何过滤你的方面的?像这样 GET /_search { "query": {.....}, "filter": { "term": { "some_field": "some_value"}}, "facets

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


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

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

GET /_search
{
  "query": {.....},
  "filter": { "term": { "some_field": "some_value"}},
  "facets: {.....}
}
如果是这样,那就不足为奇了。顶级
过滤器
参数用于在计算面后过滤搜索结果。事实上,在1.0中,正是由于这种混乱,它被重命名为
post_filter

您想改用
过滤的
查询:

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

你能举一个更明确的例子吗?刻面查询、文档等。这完全有道理,我假设这就是问题所在。但是,如果我像这样实现它并选择category X,那么所有其他类别的facet计数是否会减少到0?(为了讨论,我假设事物只有一个类别)是的,除非我误解了你。更多细节可能会有所帮助?我有两个过滤器:一个用于标记,一个用于类别。其思想是,同一类型的过滤器应该是加法的,而不同类型的过滤器应该缩小结果的范围。因此,如果我对一个类别进行过滤,它仍然会在facet中显示所有可用的类别(这是有意义的,因为它是相加的),但会根据它们在过滤的类别中是否匹配来减少标记计数。这有意义吗?Details=code:)最好是“我得到了X(示例),但我期待着Y”。更容易理解