Поиск подобъектов в объекте с использованием Elastic Search в Java - PullRequest
0 голосов
/ 05 сентября 2018

Я работал над DisMaxQueryBuilder, чтобы создать запрос, с помощью которого я могу получить подобъект внутри объекта. Чтобы было понятнее, у меня есть объектный актив, который содержит набор «тегов».

public class Asset extends BaseEntity
{
    String name;
    String code;
    Language defaultLanguage;
    @Singular Set<Participant> participants;
    @Singular Set<Tag> tags; 
}

В моем коде я использовал построитель запросов ниже, чтобы искать определенную фразу для определенного поля внутри объекта актива. Используя указанный ниже запрос, введенная фраза будет сопоставляться с каждым элементом в поле «имя», и в случае попадания мы получим этот объект обратно.

DisMaxQueryBuilder builder = disMaxQuery()
    .add(matchPhrasePrefixQuery("name",phrase).boost(1.0f));

Теперь моя проблема в том, что я хочу, чтобы введенная фраза была просмотрена в поле тегов в объекте объекта, а затем совпадала с полем описания объекта тега для попадания и пропуска.

public class Tag extends BaseEntity
{
    String type;
    String description;
    Map<String, Description> descriptions;
}

Я не смог найти способ перебора тегов, а затем искать каждое поле тега одно за другим для попадания и пропуска, используя один и тот же построитель запросов.

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

.add(matchPhrasePrefixQuery("tags.eachTag.description",phrase).boost(1.0f))

Если кто-нибудь знает обходной путь для достижения этой функциональности, я был бы очень признателен за эти усилия.

Спасибо

...