是否有用于使用弹性搜索查询查找结果的 Group BY 函数



我尝试将分组与弹性搜索集成。但我没有得到正确的答案。请支持我解决此问题。索引数据是,

data = [
       { "fruit":"apple", "taste":5, "timestamp":100},
       { "fruit":"pear", "taste":5, "timestamp":110},
       { "fruit":"apple", "taste":4, "timestamp":200},
       { "fruit":"pear", "taste":8, "timestamp":90},
       { "fruit":"banana", "taste":5, "timestamp":100}]`
My query is, 
`myQuery = {"query": {
      "match_all": {}
    },
    "aggs": {
      "group_by_fruit": {
        "terms": {
          "field": "fruit.keyword"
        },
      }
    }
    }

它显示了输出中的所有 5 个数据。实际上我只能得到 3 条记录。预期结果是,

[
   { "fruit":"apple", "taste":4, "timestamp":200},
   { "fruit":"pear", "taste":8, "timestamp":90},
   { "fruit":"banana", "taste":5, "timestamp":100}]

如果要获取具有最大时间戳的不同水果字段的文档,则应使用top_hits聚合。

{
    "query": {
      "match_all": {}
    },
    "size": 0,
    "aggs": {
        "top_tags": {
            "terms": {
                "field": "fruit.keyword",
                "size": <MAX_NUMBER_OF_DISTINCT_FRUITS>
            },
            "aggs": {
                "group_by_fruit": {
                    "top_hits": {
                        "sort": [
                            {
                                "timestamp": {
                                    "order": "desc"
                                }
                            }
                        ],
                        "size" : 1
                    }
                }
            }
        }
    }
}

最新更新