当前位置:  开发笔记 > 编程语言 > 正文

从节点请求Elasticsearch超时

如何解决《从节点请求Elasticsearch超时》经验,为你挑选了2个好方法。

我正在使用官方Javascript客户端设置一个简单的Node.js REST服务来与Elasticsearch连接.我在本地运行此代码,但群集位于远程.当我通过浏览器,使用_head插件,我可以连接ES和查询没有问题.但是,通过Javascript客户端执行此操作会超时所有请求.我设置了ElasticSearch对象,但向它发送任何请求都不起作用.我不认为这是一个网络问题,因为我可以通过浏览器访问ES.这是我要求的东西,一个非常基本的获取:

var elasticsearch = require("elasticsearch");
var es = new elasticsearch.Client({
    host: "https://my-address:9200/", // also tried without protocol part and trailing slashes
    log: "error",
    sniffOnStart: true
});

es.get({
    index: "things",
    type: "someThing",
    id: "42"
}).then(doSomeStuff, handleStuffFailed);

这会因简单的错误消息而失败 Errror: Request timeout after 30000ms.

我在这里错过了什么吗?我通过客户端文档阅读,这似乎是客户端的基本"hello world".



1> Lorien..:

尝试在实例化ES Client时扩展requestTimeout参数.

client = new elasticsearch.Client({
        host          : 'http://localhost:9200',
        requestTimeout: 60000
    });

我有一个长时间运行的过程,花了不到10分钟.通过使requestTimeout值为60000(10分钟),该过程可以在没有超时的情况下完成.


60_000 ms = 1分钟,而不是10

2> 小智..:

由于sniffOnStart,我们在QBox上也遇到了这个问题.试试这个配置:

var es = new elasticsearch.Client({
    host: "my-address:9200",
    log: "trace",
    sniffOnStart: true
});

你会看到添加的节点ip是私有ip.在我们这边,我们决定禁用嗅探并手动添加公共节点主机地址数组,如下所示:

var es = new elasticsearch.Client({
    hosts: ["my-address1:9200", "my-address2:9200", "my-address3:9200"],
    log: "error"
});

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有