Я пытаюсь агрегировать динамически отображаемые поля в ElasticSearch.
Например:
POST test/_doc/1
{
"settings": {
"range": {
"value": 200,
"display": "200 km"
},
"transmitter": {
"value": 1.2,
"display": "1.2 Ghz"
}
}
}
Свойства под settings
являются динамическими. По сути, мне нужен такой запрос:
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"settings": {
"terms": {
"field": "settings.*.display"
}
}
}
}
Поскольку *
здесь не работает, мне интересно, есть ли способ вернуть поля из безболезненного скрипта, а затем, возможно, использовать конвейерную агрегацию? Я не могу найти безболезненный эквивалент Object.keys(settings)
в JavaScript.
Я видел подход с вложенными объектами, но я хотел бы избежать этого, так как может быть много свойств «настроек» и ограничение по умолчанию равно 50, по сравнению с вложенными_объектами с 10 000 свойств.