2014-09-24 2 views
0

Я пытаюсь построить разметку категории с помощью поиска elastics.Агрегаты Elasticsearch

У меня проблема с отображением категории.

Если я запустил этот запрос (красные, случайные штаны), агрегации категорий будут отображаться только в случайном порядке. Могу ли я получить кол других категорий в одном запросе (например, обувь, джинсы, костюмы)

Пример Фильтры:

цвета:

-красный цвет (выбран в качестве термина запроса BOOL)

Категории:

Shoes 
Pants 
    -Jeans 
    - Casual (selected as a bool query term) 
Dresses 

ответ

0

Если я хорошо понимаю, вам, кажется, нужно вычислить агрегации по всем категориям, а затем отфильтровать их, чтобы показывать только одну категорию за раз.

Этого можно достичь, используя post_filter (см. documentation). Это фильтр, который применяется после, были рассчитаны агрегации.

В вашем случае, вместо запроса, как это:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"term": {"color": "red"} }, 
     {"term": {"category": "casual"}} 
     .... 
     ] 
    } 
    }, 
    "aggs": { 
    ... 
    } 
} 

Вы можете использовать это:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"term": {"color": "red"} } 
     ... 
     ] 
    } 
    }, 
    "aggs": { 
    ... 
    }, 
    "post_filter": { 
    {"term": {"category": "casual"}} 
    } 
} 

а также term фильтр на category не будут приниматься во внимание при расчете агрегирование.

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