如何使用 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
我了解到联接非常昂贵,我应该通过对数据进行非规范化来避免它们。我会这样做,这为我解决了这个问题。
我正在使用 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
我了解到联接非常昂贵,我应该通过对数据进行非规范化来避免它们。我会这样做,这为我解决了这个问题。