У меня есть следующий объект, где ключ - это идентификаторы моей группы, а значения - соответствующие коды для каждой группы.
Obj:
{
"1" : [1,2,3],
"2" : [4,5,6]
}
Я конвертирую все ключи в массив чисел и повторить их в моем запросе.
Я хотел добавить фильтр, который будет принимать только коды, которые пересекаются с моими значениями, но кажется, что вложенные поля не знакомы с моим идентификатором родительской повторяющейся группы.
Вот мой запрос -> проблема отмечена c часть
myFunc(myObj) {
groupIds:Array<number> = getAllKeysFromObject(myObj); //GETTING ALL GROUP IDS - will return [1,2]
return {
_source: false,
docvalue_fields: [{
field: 'group_id',
format: 'use_field_mapping',
}],
query: {
bool: {
filter: [{
terms: {group_id: groupIds}, //HERE ARE THE GROUP IDS
}, {
nested: {
inner_hits: {
_source: false,
docvalue_fields: [{
field: 'products.code',
format: 'use_field_mapping',
},
],
size: 2,
sort: [{[`products.somefield`]: 'desc'}],
},
path: 'products',
query: {
bool: {
must: [
{
terms: {
'products.code': myObj[group_id], //THIS DOES NOT WORK as group_id is not recognised. Would like for group_id=1 to have here [1,2,3] and for next iteration of group_id=2 to get [4,5,6]
},
},
],
},
},
},
},
],
},
},
size: 5,
};