脚本过滤器非常慢

时间:2018-11-27 07:22:56

标签: elasticsearch

我有一个脚本查询,这花了我很慢的时间来执行(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": [
                    {
}
]

0 个答案:

没有答案