首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索排序查询

弹性搜索排序查询
EN

Stack Overflow用户
提问于 2015-10-09 23:36:09
回答 1查看 418关注 0票数 0

我刚接触elastic search,想知道是否可以使用普通术语、范围查询和排序来完成以下操作,或者是否需要使用elastic search聚合查询

我有一组文档,其中有几个字符串字段和一个日期字段。我想选择那些完全匹配(术语查询)两个字符串字段并且日期在某个日期范围内的文档的前N个文档,并获得前N个文档的计数

一个典型的文档是

代码语言:javascript
复制
{ "_id" : ObjectId("55b0a8b448f3bdb6bf26683c"),
        "type" : "type1",
        "time-gmt" : ISODate("2015-07-23T08:41:29.299Z"),
        "sID" : "id1"}

我想找出,比如说,在某个“时间-格林尼治标准时间”范围内,type=“类型1”的前10个文档,以及这10个前10个文档中有多少个。因此,结果集表将

代码语言:javascript
复制
sID1    120
sID2    100
sID3    90
...
sID10   3
EN

回答 1

Stack Overflow用户

发布于 2015-10-10 07:11:44

如果我正确理解了您的问题,那么您正在寻找的部分内容(特定type的文档计数)应该可以使用存储桶聚合来实现。

存储桶聚合允许您将文档分组到一个或多个存储桶中。更多信息请看这里:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html

还有这里:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html

在您的特定情况下,我认为您可以通过构造类似于以下查询的查询来查询Elasticsearch集群:

代码语言:javascript
复制
curl -XPOST 'http://<your-elasticsearch-cluster-endpoint>/_all/_search?pretty' -d '{
    "size": 0,
    "aggregations": {
        "type_agg": {
            "filter": {
                "time-gmt": {
                    "from":<tick>,
                    "to":<tick>
                }
            },
            "terms": {
                "field": "type"
            }
        }
    }
}'

我相信这个查询将根据在type字段中找到的值来计算文档的数量。

希望这对你有足够的帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33042193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档