У меня есть индекс с продуктами там.Я пытаюсь отделить попадания, возвращаемые от упругих, по значению вложенного поля.Вот мой сокращенный индекс:
{
"mapping": {
"product": {
"properties": {
"id": {
"type": "integer"
},
"model_name": {
"type": "text",
},
"variants": {
"type": "nested",
"properties": {
"attributes": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "text"
},
"product_attribute_id": {
"type": "integer"
},
"value": {
"type": "text"
}
}
},
"id": {
"type": "integer"
},
"product_id": {
"type": "integer"
}
}
}
}
}
}
}
И пример продукта (в продукте больше вариантов и атрибутов - я их просто обрезал):
{
"_index":"product_index",
"_type":"product",
"id":192,
"model_name":"Some tshirt",
"variants":[
{
"id":1271,
"product_id":192,
"attributes":[
{
"id":29,
"name":"clothesSize",
"value":"XL",
"product_attribute_id":36740
}
]
},
{
"id":1272,
"product_id":192,
"attributes":[
{
"id":29,
"name":"clothesSize",
"value":"L",
"product_attribute_id":36741
}
]
}
]
}
Поле, о котором идет речь, - это идентификатор атрибута.,Допустим, я хочу разделить продукты по атрибуту размера - id 29. Было бы идеально, если бы ответ выглядел следующим образом:
"hits" : [
{
"_index":"product_index",
"_type":"product",
"id":192,
"model_name":"Some tshirt",
"variants":[
{
"id":1271,
"product_id":192,
"attributes":[
{
"id":29,
"name":"clothesSize",
"value":"XL",
"product_attribute_id":36740
}
]
}
]
},
{
"_index":"product_index",
"_type":"product",
"id":192,
"model_name":"Some tshirt",
"variants":[
{
"id":1272,
"product_id":192,
"attributes":[
{
"id":29,
"name":"clothesSize",
"value":"L",
"product_attribute_id":36741
}
]
}
]
}]
Я думал об отделении всех вариантов в эластичном запросе, а затем сгруппировал их на стороне приложения.по этим признакам, но я думаю, что это не самый элегантный и, прежде всего, эффективный способ.
Какие эластичные ключевые слова мне интересны?
Заранее благодарю за помощь.