0

我在尝试构建 ElasticSearch 查询时遇到了很多麻烦。

我需要根据两个字段的总和获得前 25 条推文,favoritesCount并且retweetCount. 我还需要能够在字段上指定日期范围postedCount

到目前为止,我能来的最接近的是

 query = {
    'size' : 25,
    'fields' : ['retweetCount', 'favoritesCount', 'preferredUsername', 'body'],

    "query": {
        "range": { 
            "postedTime" : {
                'gte' : 'now-24M',
                'lte' : 'now'
            }
        }
    },
    "sort" : {
        "retweetCount" : {"order" : "desc"},
        "type" : "number",

    }

};

此查询太多结果,并对具有相同转发计数的推文总数进行排序。我也无法弄清楚为什么这个查询不只返回查询中指定的字段。

理想情况下,查询将只返回字段 '['retweetCount', 'favoritesCount', 'preferredUsername', 'body']

4

1 回答 1

0

这是您应该触发的查询:

curl -X GET 'http://localhost:9200/index_name/type/_search' -d '{
"size" : 25,
"fields" : ["retweetCount", "favoritesCount", "preferredUsername", "body"],

"query": {
    "range": { 
        "postedTime" : {
            'gte' : 'now-24M',
            'lte' : 'now'
        }
    }
},
"sort" : {
    "retweetCount" : {"order" : "desc"},
    "type" : "number",

}
}'

您将所有内容嵌入查询哈希中。这不是必需的

于 2013-11-11T08:56:40.013 回答