使用Java中的弹性搜索在对象内搜索子对象

时间:2018-09-05 12:45:16

标签: java elasticsearch rx-java query-builder

我一直在研究DisMaxQueryBuilder,以便创建一个查询,通过该查询可以检索对象中的子对象。更清楚地说,我有一个包含“标签”集的对象资产。

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

在编码中,我使用了以下查询生成器来搜索Asset Object中特定字段的特定短语。通过使用下面定义的查询,输入的短语将与“名称”字段中的每个项目匹配,如果出现匹配,我们将使该对象返回。

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

现在,我的问题是我希望输入的短语必须在Asset Object的tag字段中查找,然后匹配Tag对象的描述字段以防命中和遗漏。

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

我无法找出迭代标签的方法,然后使用相同的查询构建器逐一搜索每个标签字段,以查找命中和遗漏。

在抽象视图中,我需要类似的内容,但不知道如何使用此查询生成器来实现它。

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

如果有人知道实现此功能的一些解决方法,我将非常感谢您的努力。

谢谢

0 个答案:

没有答案