2013-10-06 5 views
0

Я строю поиск продуктов и вариантов. Один продукт может иметь множество вложенных вариантов. Пример: 1 футболка может быть в 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

Выяснил это. При сопоставлении для вложенного документа мне пришлось добавить "include_in_parent" => true

Смежные вопросы