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": []
}
}
}
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。