嵌套构面的计数错误

时间:2013-10-06 16:40:51

标签: elasticsearch

我正在构建搜索产品和变体。一种产品可以有许多嵌套变体。例如:1件T恤可分为2种款式,白色为50欧元,绿色为60欧元。它仍然是相同的产品,应该在结果页面上显示一次。

这是我的映射:

{"product" => { "properties" => {"vendor_variants" => {"type" => "nested"}}}}

这是我正在做的查询:

"query" => {
    "filtered" => {
      "query" => {
        "match_all" => {}
      },
      "filter" => {
        "bool" => {
          "must" => [
            {
              "terms" => {
                "categories" => [122]
              }
            }
          ]
        }
      }
    }
  },
  "facets" => {
    "brand" => { "terms" => {"field" => "filter_brand"} },
    "price_range" => {
      "nested" => "vendor_variants",
      "range" => { "field" => "price", "ranges" => [ {"to" => 2000}, {"from" => 2000, "to" => 5000} ]
      }
    }
  }

此查询产生172个结果。但价格范围的方面是完全错误的。例如,它返回20-50欧元范围,有422个结果。我相信这是因为它计算每个嵌套的vendor_variants文档。但这不是我需要的,我需要它只计算主要产品文件。

我的查询有什么问题?

1 个答案:

答案 0 :(得分:1)

想出来。在嵌套文档的映射中,我不得不添加"include_in_parent" => true