弹性搜索网关超时 504

Elasticsearch Gateway timeout 504

我更新了一些索引映射,只需将 keyword 字段添加到文本 属性 并重新加载 Kibana 的索引模式。我被告知我应该在最后 运行 这个命令:

POST 11ad.pi.prod.test-case-18/_update_by_query?conflicts=proceed

执行后出现错误:

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

是不是超时时间太短了?怎么改?

如果您的索引很大,这是正常的。您不需要看到任何超时,任务仍在后台进行。

您可以通过运行GET _tasks?actions=*byquery&detailed查询任务查询更新状态。

您可以使用以下代码更新 TransportClient 的连接超时值:

Settings.builder().put("transport.tcp.connect_timeout", "240s")

完整的 TransportClient 代码:

Settings settings = Settings.builder()
        .put(ElasticSearchReservedWords.CLUSTER_NAME.getText(), LogHandlerConstants.CLUSTER_NAME)
        .put(ElasticSearchReservedWords.LISTENER_TRANSPORT_SNIFF.getText(), true)
        .put("transport.tcp.connect_timeout", "240s")
        .build();

Client transportClient = new PreBuiltTransportClient(settings)
        .addTransportAddresses(
                new TransportAddress("127.0.0.1"), "9300"));

每个 Elasticsearch 版本都有不同的配置键。您可以阅读此文档以了解您可以更改的其他设置:

https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-transport.html

更改 kibana.yml。 添加行:

elasticsearch.requestTimeout: 90000  # default 30s