Всем привет.
Как отфильтровать вложенный object в ES?
Есть например 3 товара с опциями.
{
name: "Product 1",
price: 10.00
options: [
{
value: "red",
option: {
name: "color"
}
},
{
value: "square",
option: {
name: "figure"
}
},
{
value: 100,
option: {
name: "height"
}
}
]
},
{
name: "Product 2",
price: 20.00
options: [
{
value: "black",
option: {
name: "color"
}
},
{
value: "circle",
option: {
name: "figure"
}
},
{
value: 200,
option: {
name: "height"
}
}
]
},
{
name: "Product 3",
price: 30.00
options: [
{
value: "blue",
option: {
name: "color"
}
},
{
value: "triangle",
option: {
name: "figure"
}
},
{
value: 300,
option: {
name: "height"
}
}
]
}
Мне нужно получить список цветов. Т.е. массив с ["red", "black", "blue"]
Делаю запрос
{
"query": {
"bool": {
"filter": [
/** Тут дополнительные фильтры **/
]
}
},
"aggs": {
"list": {
"terms": {
"field": "options.value"
}
}
}
}
Естественно получаю массив ["red", "square", 100, "black", ... 300]
Как мне получить только нужные значения? Перепробовал уже всё!
3-е суток не сплю, глотаю валерьянку и запеваю кофе :)
Растолкуйте пожалуйста.