我有一个脚本查询,这花了我很慢的时间来执行(15s)。问题是脚本,我必须总结几列并与数字进行比较。有什么可以改善性能的吗?或者在这种情况下是否有其他解决方案来替换脚本
{
"size":0,
"query":{
"bool":{
"must":[
{
"range":{
"date_sec":{
"gte":1423155600,
"lte":1543165200
}
}
},
{
"range":{
"time_sec":{
"gte":32400,
"lte":82800
}
}
},
{
"terms":{
"id_stores":[
2317,
2210,
.... over 1000 more......
]
}
}
]
}
},
"aggs":{
"current_period3":{
"filter":{
"bool":{
"must":[
{
"terms":{
"table_type":[
3
]
}
},
{
"range":{
"date_sec":{
"gte":1483203600,
"lte":1543165200
}
}
}
]
}
},
"aggs":{
"id_stores":{
"terms":{
"field":"id_stores",
"size":1000
},
"aggs":{
"area_type":{
"terms":{
"field":"area_type"
},
"aggs":{
"result_1":{
"filter":{
"script":{
"script":{
"inline":"doc.goinside.value == 1 && doc.buy.value == 1 && doc.sale_time.value != '' && (doc.zone1.value+doc.zone2.value+doc.zone3.value) > 0",
"lang":"painless"
}
}
},
"aggs":{
"result_1":{
"sum":{
"script":{
"inline":"doc.zone1.value+doc.zone2.value+doc.zone3.value",
"lang":"painless"
}
}
}
}
},
.............. over 1000 filter more ...................
}
}
}
}
}
}
}
}
结果始终在15s以上,我的elasticsearch是window os,RAM 16GB,CPU i5-3570 3.4ghz
{
"took": 14980,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 45869315,
"max_score": 0,
"hits": []
},
"aggregations": {
"current_period3": {
"doc_count": 3128225,
"id_stores": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
}
]