Как получить общую частоту терминов за счет агрегации в эластичности?

В результате поиска я хочу получить общее количество раз, когда термин появлялся в списке возвращенных документов. Используя только агрегацию терминов, я могу получить только количество документов, но мне нужно общее количество терминов, встречающихся во всем наборе.

Например:

doc1:
Name: David
Tech: A1, A1, B1, B1, C1

doc2: 
Name: Josh
Tech: C1, D1, E1

doc3:
Name: David
Tech: A1, D1, F1

когда я ищу «Дэвид» в поле «Имя», я обычно получаю агрегацию «Технология» как:

A1: 2
B1: 1
C1: 1
D1: 1
F1: 1

тогда как я хочу, чтобы мои результаты отображались:

A1: 3
B1: 2
C1: 1
D1: 1
F1: 1

Могу ли я сделать это с помощью агрегатов?

Благодарю вас!


person John Lee    schedule 14.09.2020    source источник


Ответы (1)


Настройка поля для векторов терминов дает доступ к количеству терминов.

Затем вы можете запросить любое количество идентификаторов документов

Дает вам список терминов в документе с подсчетом появления термина в документе и подсчетом термина в осколке. Если у вас есть только один шард, это хорошо, в противном случае вы можете оценить использование всех сегментов.

см. это Как получить частоту термин в эластичном поиске с использованием python?

person Bob Sparks    schedule 31.05.2021