此SQL的等效ElasticSearch查询是什么

时间:2015-09-14 23:46:07

标签: elasticsearch aggregation

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

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

select hash, min(reference)
from moo
group by hash

由于引用是一个字符串,我无法在ElasticSearch中使用min聚合。

我已经能够使用以下ElasticSearch查询来完成此任务......

{
    "from": 0,
    "size": 0,
    "aggs": {    
        "items": {
            "terms": {
                "field": "doc.hash"
            },
            "aggs": {
                "id": {
                    "terms": {
                        "field": "doc.reference",
                        "size": 1
                    }
                }                
            }
        }
    }
}

我想知道是否有更好的"方式吗

{
    "from": 0,
    "size": 0,
    "aggs": {
        "items": {
            "terms": {
                "field": "doc.hash",
                "size": 5000
            },
            "aggs": {
                "reference": {
                    "top_hits": {
                        "size": 1
                    }
                }
            }
        }
    }
}

我有这个作为替代方案,我只是觉得来自elasticsearch的回复是如此冗长。

即每个"哈希"我得到了所有这些

{
    "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"
                        }
                    },
                }
            ]
        }
    }
}

当我真正想要的是两个值时,哈希和......

" key":" c8964350989772cc4348e72d217b89b8"," id":" e412c76b-b767-4c96-8cd6-ef8d6bf90acd"

想知道是否有办法减轻服务器上的负载以产生所有额外的毛病,并且如果有更简洁的方法来进行这种类型的查询。

0 个答案:

没有答案