【问题标题】:How to limit number of documents returned for each term in Elasticsearch terms query?如何限制 Elasticsearch 术语查询中每个术语返回的文档数量?
【发布时间】:2019-06-27 01:43:13
【问题描述】:

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

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

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

我试图完成的是获取列表中每个术语的最新文档的 Elasticsearch _id。我可以这样做吗?还是需要为每个学期单独申请?

【问题讨论】:

  • 为什么它必须是一个查询?意思是你不能用size写两个单独的查询作为1吗?
  • 因为我需要获取有关数百个文件的信息,并且执行数百个请求看起来不是最好的方法

标签: elasticsearch


【解决方案1】:

您有两种不同的方式来获取每个术语的 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
                        }
                    }
                }
            }
        }
    }
    

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多