Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系
在Elasticsearch中,父子文档关系可以通过使用join
字段类型来定义。以下是一个创建包含父子关系的文档的例子:
首先,创建一个索引并定义join
字段:
PUT my_index
{
"mappings": {
"properties": {
"join_field": {
"type": "join",
"relations": {
"question": "answer"
}
}
}
}
}
然后,可以向索引中添加父文档和子文档:
POST my_index/_doc/1?routing=1
{
"text": "What is the answer to this question?",
"join_field": {
"name": "question"
}
}
POST my_index/_doc/2?routing=1&refresh=true
{
"text": "42",
"join_field": {
"name": "answer",
"parent": "1"
}
}
在这个例子中,我们创建了一个名为question
的父文档和一个名为answer
的子文档,并通过join_field
中的parent
字段建立了它们之间的关系。子文档引用了父文档的ID(在这个例子中是1
)。
通过这种方式,Elasticsearch能够在查询时保持父子文档的关系,例如,你可以执行一个has\_child查询来找到有子文档的父文档:
POST my_index/_search
{
"query": {
"has_child": {
"type": "answer",
"query": {
"match": {
"text": "42"
}
}
}
}
}
这个查询将返回所有包含子文档回答为“42”的问题。
评论已关闭