您好,登錄后才能下訂單哦!
PHP通過API對ES進行搜索后發現只能獲取10條數據,搜索語句如下:
{ "query": { "filtered": { "query": { "query_string": { "query": "level:\"警告\" AND source_name:\"ASP.NET\" ", "analyze_wildcard": true } }, "filter": { "bool": { "must": [ { "range": { "@timestamp": { "gte": 1494309300, "lte": 1494489299, "format": "epoch_second" } } } ], "must_not": [] } } } } }
其余ES如果沒有指定SIZE的話,默認是10條
http://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch.Elasticsearch.search
但是size也不能超過10000,否則也會報錯。
修改搜索語句如下:
{ "size": 10000, "query": { "filtered": { "query": { "query_string": { "query": "level:\"警告\" AND source_name:\"ASP.NET\" ", "analyze_wildcard": true } }, "filter": { "bool": { "must": [ { "range": { "@timestamp": { "gte": 1494309300, "lte": 1494489299, "format": "epoch_second" } } } ], "must_not": [] } } } } }
即可
經過以上還會出現問題,就是當數據超過一定量的時候,無法獲取最新數據,原因是每次獲取數據都是從1到10000條,當10000條之后的數據就無法顯示了。基于此我們不建議時間跨度超過10000條數據,防止數據丟失。因此我們需要對其進行時間排序,讓最新的數據靠前:
{ "size": 10000, "sort": [ { "@timestamp": { "order": "desc", "unmapped_type": "boolean" } } ], "query": { "filtered": { "query": { "query_string": { "query": "level:\"警告\" AND source_name:\"ASP.NET\" ", "analyze_wildcard": true } }, "filter": { "bool": { "must": [ { "range": { "@timestamp": { "gte": 1494309300, "lte": 1494489299, "format": "epoch_second" } } } ], "must_not": [] } } } } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。