在ElasticSearch中展开

时间:2018-02-27 09:42:32

标签: elasticsearch nest aggregation elasticsearch-5 elasticsearch-net

我目前在ElasticSearch中有以下索引

PUT my_index
{
  "mappings": {
    "doc": {
      "properties": {
        "type" : {
          "type": "text",
          "fielddata": true
        },
        "id" : {
          "type": "text",
          "fielddata": true
        },
        "nestedTypes": {
          "type": "nested",
          "properties": {
            "nestedTypeId":{
              "type": "integer"
            },
            "nestedType":{
              "type": "text",
              "fielddata": true
            },
            "isLead":{
              "type": "boolean"
            },
            "share":{
              "type": "float"
            },
            "amount":{
              "type": "float"
            }
          }
        }
      }
    }
  }
}

我需要将嵌套类型与每行中的idtype字段一起显示在HTML表格中。

我正在尝试在MongoDB中实现与unwind类似的东西。

我尝试了反向嵌套聚合,如下所示

GET my_index/_search
{
  "size": 0,
  "aggs": {
"NestedTypes": {
  "nested": {
    "path": "nestedTypes"
  },
  "aggs": {
    "NestedType": {
      "terms": {
        "field": "nestedTypes.nestedType",
        "order": {
          "_key": "desc"
        }
      },
      "aggs": {
        "Details": {
          "reverse_nested": {}, 
          "aggs": {
            "type": {
              "terms": {
                "field": "type"
              }
            },
            "id": {
              "terms": {
                "field": "id"
              }
            }
          }
        }
      }
    }
  }
}
  }
}

但是上面只返回nestedTypes中的一个字段,但我需要所有这些字段。

另外,我需要对此表进行排序和分页。能告诉我如何在ElasticSearch中实现这一目标。

1 个答案:

答案 0 :(得分:0)

ElasticSearch不支持此操作。当提出在git中实现相同要求的请求时,给出以下响应:

  

我们在星期五的Fixit中进行了讨论,并同意我们不会尝试   由于我们想不出一种支持的方式而实施它   这样的操作有效。

     

我们认为合理的唯一想法归结为   另一个存储相同数据但变平的索引。取决于   您的用例,您也许可以在其中维护这两个视图   并行或仅保留您今天拥有的那个,然后   在需要时实现数据的扁平化视图并将其抛出   完成查询后离开。在两种情况下,这都需要   客户端逻辑。

请求的链接为here