php获取有几条数据,PHP通过API搜索elasticsearch只获得10条数据

在使用PHP通过API对接Elasticsearch(ES)进行数据搜索时,遇到默认返回10条数据的限制。为获取更多数据,尝试设置size为10000,但当数据量超过10000时,最新数据无法显示。为避免数据丢失,采用时间排序确保最新数据优先。修改搜索语句,加入时间降序排序,以确保即使在大量数据下也能获取最新记录。
摘要由CSDN通过智能技术生成

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条

但是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": []

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值