Вот мое объединение:
"aggregations": {
"nested-econtext": {
"nested": {
"path": "econtext"
},
"aggregations": {
"nested-name": {
"terms": {
"field": "econtext.name.raw",
"size": 2147483647,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"nested-type": {
"terms": {
"field": "econtext.type",
"size": 2147483647,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"other-fields": {
"terms": {
"script": {
"source": "if(doc['econtext.facets.key.raw'].size()!=0){doc['econtext.facets.key.raw'].value + '|' + doc['econtext.facets.value.raw'].value}",
"lang": "painless"
}
}
}
}
}
}
}
}
}
}
Сценарий здесь
"if(doc['econtext.facets.key.raw'].size()!=0){doc['econtext.facets.key.raw'].value + '|' + doc['econtext.facets.value.raw'].value}"
Однако у меня есть результаты
Вот пример того, что мы имеем в нашей БД
"econtext" : [
{
"name" : "Answering Machines",
"type" : "T",
"facets" : [
{
"key" : "domain",
"value" : "product"
}
]
}
и вот что возвращается ...
{
"key" : "Answering Machines",
"doc_count" : 1,
"nested-type" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "T",
"doc_count" : 1,
"other-fields" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ ]
}
}
]
}
Почему этот скрипт не возвращает "домен | продукт", так как показанный выше, он ничего не хранит в ведре, но я вижу это в БД. На самом деле, для всех возвращаемых данных все они возвращают пустые сегменты, когда не все пусты.
Однако не все документы содержат данные в массиве фасетов, поэтому я проверяю размер в скрипте.