elasticsearch - 从 Elasticsearch 返回带有子文档的父数据

标签 elasticsearch

是否可以通过在 Elasticsearch 查询中搜索子文档来返回父数据?

我有两种文件类型,例如书和章,作为父/子(非嵌套)相关。

我想对子文档运行搜索并返回子文档,其中包含父文档中的一些字段。我试图避免对父级执行单独的查询。

更新

我能找到的唯一方法是使用 has_child查询,然后进行一系列聚合以回溯到子项并再次应用查询/过滤器。然而,这似乎过于复杂和低效。

GET index/_search
{
  "size": 10,
  "query": {
    "has_child": {
      "type": "chapter",
  "query": {
    "term": {
      "field": "value"
        }
      }
    }
  },
  "aggs": {
"name1": {
  "terms": {
    "size": 50,
    "field": "id"
  },
  "aggs": {
    "name2": {
      "top_hits": {
        "size": 50
      }
    },
    "name3": {
      "children": {
        "type": "type2"
      },
      "aggs": {
        "docFilter": {
          "filter": {
            "query": {
              "match": {
                "_all": "value"
              }
            }
          },
          "aggs": {
            "docs": {
              "top_hits": {
                "size": 50
              }
            }
          }
        }
      }
    }
  }
}
  }
}

最佳答案

可以做一个 has_child使用 top hits 返回父文档的查询聚合返回子文档,但有点麻烦。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html
Inner Hits将在 1.5.0 中发布的功能将满足您的需求。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-inner-hits.html

您可以从 master 构建源代码并尝试一下。

关于elasticsearch - 从 Elasticsearch 返回带有子文档的父数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28451938/

相关文章:

spring-mvc - ES Spring数据将大小添加到spring数据格式中

elasticsearch - elasticsearch精确匹配的字符串包括点

elasticsearch - 根据子字段值对父文档进行排序/评分

python - 如何使用flask_msearch配置诸如模糊性之类的参数?

elasticsearch - FileBeat收集问题

elasticsearch - Elasticsearch查询行为

elasticsearch - ElasticClient.MapRaw和.CreateIndexRaw是否消失了?

elasticsearch - 如何使用if-else条件进行 Elasticsearch ,根据输出部分中logstash conf中的名称过滤kafka主题

elasticsearch - 许多 kibana 索引

search - 使用什么样的过滤器来匹配像 OCallaghan 和 O'Callaghan 这样的东西?