简体   繁体   English

根据最大值或最小值折叠结果

[英]Collapse results based on the maximum or mininum value

I have data in this format.我有这种格式的数据。

[
    {
        lead_id: "lead_1",
        value: 34
    },
    {
        lead_id: "lead_1",
        value: 22
    },
    {
        lead_id: "lead_1",
        value: 67
    },
    {
        lead_id: "lead_2",
        value: 12
    },
    {
        lead_id: "lead_2",
        value: 9
    },
    {
        lead_id: "lead_3",
        value: 22
    },
    {
        lead_id: "lead_3",
        value: 5
    }
]

And I want to sort the leads based on the value in desc or asc order.我想根据descasc顺序的值对线索进行排序。 Also, I need to collapse the result.另外,我需要折叠结果。 I used a query like this for the sort.我使用这样的查询进行排序。

{
    "collapse": {
        "field": "lead_id"
    },
    "sort": {
        "value": { "order": "asc" }
    }
}

But I want to sort base on the maximum value.但我想根据maximum进行排序。 ie if I sort in asc I want the results to be:即,如果我按asc排序,我希望结果为:

[
    {
        lead_id: "lead_2",
        value: 12
    },
    {
        lead_id: "lead_3",
        value: 22
    },
    {
        lead_id: "lead_1",
        value: 67
    }
]

and for descending和下降

[
    {
        lead_id: "lead_1",
        value: 67
    },
    {
        lead_id: "lead_3",
        value: 22
    },
    {
        lead_id: "lead_2",
        value: 12
    }
]

collapse_sort as a feature is not available yet. collapse_sort 作为一项功能尚不可用。 There is an open PR so it might be available in future.有一个开放的PR ,所以它可能在将来可用。

Work around is to use inner_hits解决方法是使用 inner_hits

{
  "collapse": {
    "field": "lead_id.keyword",
    "inner_hits": {
      "name": "most_recent",                  
      "size": 1,                              
      "sort": [ { "value": "desc" } ]    
    }
  },
  "sort": {
    "value": {
      "order": "asc"
    }
  }
}

Result结果

"hits" : [
      {
        "_index" : "index11",
        "_type" : "_doc",
        "_id" : "xAugp4MBfEI_j4sNVw3V",
        "_score" : null,
        "_source" : {
          "lead_id" : "lead_3",
          "value" : 5
        },
        "fields" : {
          "lead_id.keyword" : [
            "lead_3"
          ]
        },
        "sort" : [
          5
        ],
        "inner_hits" : {  --> group sorted values
          "most_recent" : {
            "hits" : {
              "total" : {
                "value" : 2,
                "relation" : "eq"
              },
              "max_score" : null,
              "hits" : [
                {
                  "_index" : "index11",
                  "_type" : "_doc",
                  "_id" : "wwugp4MBfEI_j4sNTw1c",
                  "_score" : null,
                  "_source" : {
                    "lead_id" : "lead_3",
                    "value" : 22
                  },
                  "sort" : [
                    22
                  ]
                }
              ]
            }
          }
        }
      },
      {
        "_index" : "index11",
        "_type" : "_doc",
        "_id" : "wgugp4MBfEI_j4sNSA00",
        "_score" : null,
        "_source" : {
          "lead_id" : "lead_2",
          "value" : 9
        },
        "fields" : {
          "lead_id.keyword" : [
            "lead_2"
          ]
        },
        "sort" : [
          9
        ],
        "inner_hits" : {
          "most_recent" : {
            "hits" : {
              "total" : {
                "value" : 2,
                "relation" : "eq"
              },
              "max_score" : null,
              "hits" : [
                {
                  "_index" : "index11",
                  "_type" : "_doc",
                  "_id" : "wQugp4MBfEI_j4sNQg3t",
                  "_score" : null,
                  "_source" : {
                    "lead_id" : "lead_2",
                    "value" : 12
                  },
                  "sort" : [
                    12
                  ]
                }
              ]
            }
          }
        }
      },
      {
        "_index" : "index11",
        "_type" : "_doc",
        "_id" : "vwugp4MBfEI_j4sNNw0q",
        "_score" : null,
        "_source" : {
          "lead_id" : "lead_1",
          "value" : 22
        },
        "fields" : {
          "lead_id.keyword" : [
            "lead_1"
          ]
        },
        "sort" : [
          22
        ],
        "inner_hits" : {
          "most_recent" : {
            "hits" : {
              "total" : {
                "value" : 3,
                "relation" : "eq"
              },
              "max_score" : null,
              "hits" : [
                {
                  "_index" : "index11",
                  "_type" : "_doc",
                  "_id" : "wAugp4MBfEI_j4sNPQ3F",
                  "_score" : null,
                  "_source" : {
                    "lead_id" : "lead_1",
                    "value" : 67
                  },
                  "sort" : [
                    67
                  ]
                }
              ]
            }
          }
        }
      }
    ]

Parent document will still have values sorted as per general sort.父文档仍将按照一般排序对值进行排序。 Group sort values can be picked from inner hits可以从内部命中中选取组排序值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM