如何限制Elasticsearch术语查询中每个术语返回的文档数量?

时间:2019-06-26 17:04:58

标签: elasticsearch

我尝试获取具有指定术语列表的文档,例如:

GET /_search
{
    "query" : {
        "terms" : {
            "md5" : ["file_1", "file_2"]
        }
    }
}

是否可以将Elasticsearch结果每个术语限制为一个文档?因此,我应该为“ file_1” 提供一个文档,为“ file_2” 提供一个文档,依此类推。

我想要完成的工作是为列表中的每个术语获取Elasticsearch的最新文档 _id 。我可以这样做吗?还是有必要为每个学期单独提出要求?

1 个答案:

答案 0 :(得分:0)

您有两种不同的方式来获取每个学期的 N 个文档。

  • 一种方法是对每个术语执行一个请求。

  • 另一种方法是使用热门匹配(请参见文档here)。

    GET /_search
    {
        "query" : {
            "terms" : {
                "md5" : ["file_1", "file_2"]
            }
        },
        "aggs": {
            "top-docs": {
                "terms": {
                    "field": "md5",
                    "size": 3
                },
                "aggs": {
                    "top_tag_hits": {
                        "top_hits": {
                            "size" : 1
                        }
                    }
                }
            }
        }
    }