如何使用 Spring Data Elasticsearch 4.0.0 实现连接字段

How to implement join-fields with Spring Data Elasticsearch 4.0.0

我正在使用 Spring Data Elasticsearch 4.0.0,我想在我的实体之间建立父子关系。我发现 @JoinTypeRelation 附带版本 4.1.X,但不幸的是,我仍然使用 4.0.0。官方文档没有任何关于如何实现join-fields的信息,但我希望仍然有办法实现。

为了提供一些更详细的信息:由于 ES 7.6.2 不再支持类型,我将我的两个实体(父实体和子实体)合并为一个包含父实体或子实体的 class信息,但绝不是两者。

@Document(indexName = "my_index")
public class ParentOrChild {

    @Id
    private String _id;

    @Field(type = FieldType.Keyword)
    private String someParentProperty;

    @Field(type = FieldType.Keyword)
    private String someChildProperty;

    // getters and setters
}

现在我想创建一个连接字段,以便表示子项的实体可以引用另一个表示父项的实体。我的目标是稍后通过搜索子实体的属性来找到父实体,如下所示:

GET my_index/_search
{
    "query": {
        "has_child" : {
            "type" : "_doc",
            "query" : {
                "fuzzy" : {
                    "someChildProperty" : "value"
                }
            }
        }
    }
}

感谢您给我的任何提示。

谢谢和亲切的问候, ElasticsearchLearner

我了解到联接非常昂贵,我应该通过对数据进行非规范化来避免它们。我会这样做,这为我解决了这个问题。