Друзья,
Я провожу некоторый анализ, чтобы найти уникальные пары из сотен миллионов документов. Мнимый пример показан ниже:
документ field1 field2
- AAA: BBB
- AAA: CCC
- PPP: QQQ
- PPP: QQQ
- ХХХ: ГГГ
- ХХХ: ГГГ
- МММ: NNN
90% документа содержит уникальную пару, как показано выше в документах 3, 4, 5, 6 и 7, которые меня не интересуют в результате агрегирования. Мне интересно объединить документы 1 и 2.
Запрос на агрегирование терминов:
"aggs": { "f1": { "terms": { "field": "FIELD1", "min_doc_count": 2 }, "aggs": { "f2": { "terms": { "field": "FIELD2" } } } } }
Результат агрегирования сроков
"aggregations": { "f1": { "buckets": [ { "key": "PPP", "doc_count": 2, "f2": { "buckets": [ { "key": "QQQ", "doc_count": 2 } ] } }, { "key": "XXX", "doc_count": 2, "f2": { "buckets": [ { "key": "YYY", "doc_count": 2 } ] } }, { "key": "AAA", "doc_count": 2, "f2": { "buckets": [ { "key": "BBB", "doc_count": 1 }, { "key": "CCC", "doc_count": 1 } ] } } ] } }
Меня интересует только, чтобы ключ AAA находился в результате агрегации. Как лучше всего отфильтровать результат агрегирования, содержащий отдельные пары?
Я пробовал с агрегацией мощности, которая приводит к подсчету значений unque. Однако я не могу отфильтровать то, что мне не интересно, из результатов агрегирования.
Запрос агрегирования мощности
"aggs": { "f1": { "terms": { "field": "FIELD1", "min_doc_count": 2 }, "aggs": { "f2": { "cardinality": { "field": "FIELD2" } } } } }
Результат агрегирования мощности
"aggregations": { "f1": { "buckets": [ { "key": "PPP", "doc_count": 2, "f2": { "value" : 1 } }, { "key": "XXX", "doc_count": 2, "f2": { "value" : 1 } }, { "key": "AAA", "doc_count": 2, "f2": { "value" : 2 } } ] } }
По крайней мере, если бы я мог отсортировать по количеству элементов, это помогло бы мне найти обходные пути. Пожалуйста, помогите мне в этом отношении.
P.S: Написание программы Spark / Mapreduce для постобработки / фильтрации результата агрегирования не является ожидаемым решением этой проблемы.
order
в первой агрегации, как это"terms":{"field":"field1","min_doc_count":2,"order":{"f2":"desc/asc"}}
- person Vara Prasad   schedule 21.12.2015