在弹性搜索中运行脚本时出错,网关超时

时间:2018-09-24 10:39:26

标签: javascript elasticsearch timeout api-gateway http-status-code-504

在弹性搜索中运行脚本时,出现504网关超时错误。

 {
      "query": {
        "bool": {
          "filter": {
            "script": {
              "script": " doc['creted_date'].date.getMonthOfYear() == 12 "
            }
          }
        }
      },
      "aggs": {
        "test": {
          "date_histogram": {
            "field": "creted_date",
            "interval": "month",
            "format": "MMM"

          },
          "aggs": {
            "cost": {
              "sum": {
                "field": "cost"
              }
            }
          }
        }
      }
    }

错误结果:

 {
      "statusCode": 504,
      "error": "Gateway Time-out",
      "message": "Client request timeout"
    }

每当我在文档数量很少的索引上运行此脚本时,它就会提供完美的输出。但是在具有大量文档的索引上,会出现上述错误。

我们可以在弹性搜索中手动设置请求超时吗?或对此问题有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

尝试一下。

{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "lang": "expression",
          "script": "doc['creted_date'].getMonth() == month-1",
          "params": {
            "month": 12
          }
        }
      }
    }
  }
}

答案 1 :(得分:0)

尝试使用Elasticsearch 6.x。

{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
            "source":  "doc['created_on'].date.getMonthOfYear() == params.month",
              "params": {
                "month": 5
              }
          }
        }
      }
    }
  }
}