Я работаю над Elasticsearch Aggregation, и у меня есть вопрос относительно того, как выполнить конвейерную агрегацию.У меня есть три высокоуровневых поля в моем документе ES:
documentId, list1, list2
Пример: у меня есть пара документов:
документ 1:
{
"documentId":"1",
"list1":
[
{
"key": "key1",
"value": "value11"
}
],
"list2":
[
{
"key": "key2",
"value": "value21"
}
...
]
}
документ 2:
{
"documentId":"2",
"list1":
[
{
"key": "key1",
"value": "value11"
}
],
"list2":
[
{
"key": "key2",
"value": "value21"
}
...
]
}
документ 3:
{
"documentId":"3",
"list1":
[
{
"key": "key1",
"value": "value12"
}
],
"list2":
[
{
"key": "key2",
"value": "value21"
}
...
]
}
Подводя итог -
document1 и document2 имеют одинаковый набор значений для ключа1 иkey2 (за исключением того, что id отличается, поэтому они рассматриваются как два отдельных документа).
document3 имеет то же значение для key2, что и в document1 и document2.Значение для key1 отличается от document1 и document2.
Я хочу запустить агрегатор терминов для ключей поля list1, который должен использоваться в качестве входных данных для агрегирования терминов, сделанного для list2.
Итак, для вышеупомянутогоНапример, общий вывод, который я хочу - это значение 21: 2 (один счет, соответствующий значению 11 в ключе 1, и второй счет, соответствующий значению 12 в ключе 1)
и НЕ значение 21: 3 (два счета соответствуют значению 11 в ключе 1 и третьемколичество, соответствующее значению 12 в key1).
Есть ли простой способ сделать это?