elasticsearch 此SQL的等效ElasticSearch查询是什么,elasticsearch,aggregation,elasticsearch,Aggregation" /> elasticsearch 此SQL的等效ElasticSearch查询是什么,elasticsearch,aggregation,elasticsearch,Aggregation" />

elasticsearch 此SQL的等效ElasticSearch查询是什么

elasticsearch 此SQL的等效ElasticSearch查询是什么,elasticsearch,aggregation,elasticsearch,Aggregation,我有许多具有唯一引用的文档,但有些文档可能共享相同的哈希 此sql查询为每个唯一哈希返回一行 select hash, min(reference) from moo group by hash 由于引用是一个字符串,我不能在ElasticSearch中使用最小聚合 我已经能够通过以下ElasticSearch查询来完成这项工作 { "from": 0, "size": 0, "aggs": { "items": { "t

我有许多具有唯一引用的文档,但有些文档可能共享相同的哈希

此sql查询为每个唯一哈希返回一行

select hash, min(reference)
from moo
group by hash
由于引用是一个字符串,我不能在ElasticSearch中使用最小聚合

我已经能够通过以下ElasticSearch查询来完成这项工作

{
    "from": 0,
    "size": 0,
    "aggs": {    
        "items": {
            "terms": {
                "field": "doc.hash"
            },
            "aggs": {
                "id": {
                    "terms": {
                        "field": "doc.reference",
                        "size": 1
                    }
                }                
            }
        }
    }
}
我想知道有没有更好的办法

我有这个选择,我只是觉得elasticsearch的响应太冗长了

i、 对于每个散列,我得到所有这些结果

{
    "key": "c8964350989772cc4348e72d217b89b8",
    "doc_count": 17,
    "reference": {
        "hits": {
            "total": 17,
            "max_score": null,
            "hits": [
                {
                    "_index": "default",
                    "_type": "blah",
                    "_id": "e412c76b-b767-4c96-8cd6-ef8d6bf90acd",
                    "_score": null,
                    "_source": {
                        "meta": {
                            "rev": "1-00048ac556524b730000000002000001",
                            "flags": 33554433,
                            "expiration": 0,
                            "id": "e412c76b-b767-4c96-8cd6-ef8d6bf90acd"
                        }
                    },
                }
            ]
        }
    }
}
当我真正想要的是两个值,散列和

密钥:c8964350989772cc4348e72d217b89b8,id:e412c76b-b767-4c96-8cd6-ef8d6bf90acd


我想知道是否有办法减轻服务器上的负载以生成所有额外的绒毛,是否有更干净的方法来执行该类型的查询。

上述es查询是否返回min doc.reference,我不在乎mindoc.reference我只想每个hash.FWIW一个如果你想min你可以使用我添加了top_hits版本和一条关于它的评论,非常感谢你的输入。你可以使用top hits获得你想要的响应字段。此外,如果你想在顶部点击分钟,我会添加一个排序块和排序的参考。这将取决于未分析的引用映射方式。文章中的示例文档有助于更好地理解,响应中显示的文档似乎没有散列或引用字段
{
    "key": "c8964350989772cc4348e72d217b89b8",
    "doc_count": 17,
    "reference": {
        "hits": {
            "total": 17,
            "max_score": null,
            "hits": [
                {
                    "_index": "default",
                    "_type": "blah",
                    "_id": "e412c76b-b767-4c96-8cd6-ef8d6bf90acd",
                    "_score": null,
                    "_source": {
                        "meta": {
                            "rev": "1-00048ac556524b730000000002000001",
                            "flags": 33554433,
                            "expiration": 0,
                            "id": "e412c76b-b767-4c96-8cd6-ef8d6bf90acd"
                        }
                    },
                }
            ]
        }
    }
}