原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-parent-id-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-parent-id-query.html

parent_id 查询

返回联结(joined)到指定父文档的子文档。 可以使用 join 字段映射在同一索引中的文档之间创建父子关系。

请求示例

创建索引

要使用 parent_id 查询,索引必须包含 join 字段映射。 若要查看如何为 parent_id 查询创建索引,请尝试下面这个例子。

  1. 创建一个使用了 join 字段映射的索引:

    PUT /my-index
    {
        "mappings": {
            "properties" : {
                "my-join-field" : {
                    "type" : "join",
                    "relations": {
                        "my-parent": "my-child"
                    }
                }
            }
        }
    }
  2. 添加并索引一个ID为1的父文档:

    PUT /my-index/_doc/1?refresh
    {
      "text": "This is a parent document.",
      "my-join-field": "my-parent"
    }
  3. 添加并索引一个该父文档的子文档,ID为2

    PUT /my-index/_doc/2?routing=1&refresh
    {
      "text": "This is a child document.",
      "my_join_field": {
        "name": "my-child",
        "parent": "1"
      }
    }

查询示例

下面这个搜索返回ID为1的父文档的子文档:

GET /my-index/_search
{
  "query": {
      "parent_id": {
          "type": "my-child",
          "id": "1"
      }
  }
}

parent_id的顶级参数

type
(必需, string) 为 join 字段映射的子关系的名称。
id
(必需, string) 父文档的ID。查询会返回该父文档的子文档。
ignore_unmapped

(可选, boolean) 指示是否忽略未映射的 type 并且不返回任何文档而不是错误。默认为false

如果为 false,当 type 未映射时 Elasticsearch 会返回错误。

可以使用此参数来查询可能不包含 type 的多个索引。