簡體   English   中英

彈性搜索排序查詢

[英]Elastic Search sort query

我是彈性搜索的新手,想知道是否可以使用常規術語,范圍查詢和排序來完成以下操作,或者是否需要使用彈性搜索聚合查詢

我有一組帶有幾個字符串字段和一個日期字段的文檔。 我想選擇與字符串字段中的兩個完全匹配(條件查詢)且日期在某個日期范圍內的那些文檔的前N個,並獲取這些前N個文檔的計數

一個典型的文檔將是

{ "_id" : ObjectId("55b0a8b448f3bdb6bf26683c"),
        "type" : "type1",
        "time-gmt" : ISODate("2015-07-23T08:41:29.299Z"),
        "sID" : "id1"}

我想查找某個“時間范圍”范圍內的類型為“ type 1”的前10個文檔,以及這10個頂級文檔中有多少個。 因此,結果集表將

sID1    120
sID2    100
sID3    90
...
sID10   3

如果我正確理解了您的問題,則可以使用存儲桶聚合來實現您要查找的內容(特定type的文檔數)的一部分。

存儲桶聚合使您可以將文檔分組到一個或多個存儲桶中。 這里的更多信息:

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

和這里:

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

在您的特定情況下,我認為您可以通過類似於以下內容的查詢來查詢Elasticsearch集群:

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字段中找到的值來計算文檔數。

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM