elasticsearch 无法在Elasticsearch中执行搜索,错误“;嗅探群集状态失败。”;,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 无法在Elasticsearch中执行搜索,错误“;嗅探群集状态失败。”;,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 无法在Elasticsearch中执行搜索,错误“;嗅探群集状态失败。”;

elasticsearch 无法在Elasticsearch中执行搜索,错误“;嗅探群集状态失败。”;,elasticsearch,nest,elasticsearch,Nest,我在Elasticsearch中遇到了一个奇怪的问题,其中只有搜索API失败,并显示消息“Failed sniffing cluster state.”。其他API如Bulk和CreateIndex等工作正常。代码在其他系统中也可以工作,所以我很确定这只是我本地系统的问题。详情如下: 我正在使用SniffingConnectionPool创建ElasticClient。弹性集群是在另一台机器上设置的,当我在代码运行的同一台机器上使用弹性实例设置时,一切都正常 以下是我在返回的响应中找到的各种异常

我在Elasticsearch中遇到了一个奇怪的问题,其中只有搜索API失败,并显示消息“Failed sniffing cluster state.”。其他API如Bulk和CreateIndex等工作正常。代码在其他系统中也可以工作,所以我很确定这只是我本地系统的问题。详情如下:

我正在使用SniffingConnectionPool创建ElasticClient。弹性集群是在另一台机器上设置的,当我在代码运行的同一台机器上使用弹性实例设置时,一切都正常

以下是我在返回的响应中找到的各种异常对象的堆栈跟踪:

Unsuccessful low level call on GET: /_nodes/http,settings?timeout=2s&flat_settings=true
# Audit trail of this API call:
# OriginalException: System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8888
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at Elasticsearch.Net.HttpConnection.Request[TResponse](RequestData requestData)
# Request:
<Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>
# Response:
<Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>


No connection could be made because the target machine actively refused it 127.0.0.1:8888


at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
两个节点对以下请求的响应:

  • 节点1:POST/contentindex_636723112889619049/_search?scroll=30s HTTP/1.1
  • 节点2:POST/contentindex_636723112889619049/_search?scroll=30s HTTP/1.1

    {
    "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAvFmk2TnZ1ZzN6UTVXdjVLai13aVBDZGcAAAAAAAAALRZRLWFwWk9BZFR3dXZSNkQ1a2ZHRjJnAAAAAAAAADEWaTZOdnVnM3pRNVd2NUtqLXdpUENkZwAAAAAAAAAuFlEtYXBaT0FkVHd1dlI2RDVrZkdGMmcAAAAAAAAAMBZpNk52dWczelE1V3Y1S2otd2lQQ2Rn",
    "took": 1986,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1.683245,
        "hits": [{
            "_index": "50000_default_contentindex_636723112889619049",
            "_type": "_doc",
            "_id": "2492241",
            "_score": 1.683245,
            "_source": {
                "module_id": 528,
                "content_id": 2492241,
                "module_type_id": 2,
                "level_id": 330
            }
        }]
    }
    
    }

  • 现在您可以看到,从服务器返回的HTTP响应和预期的一样,但我从NEST得到的响应有一个错误,即

    <InnerException>
        <ExceptionType>Elasticsearch.Net.PipelineException, Elasticsearch.Net, Version=6.0.0.0, Culture=neutral, PublicKeyToken=96c599bbe3e70f5d</ExceptionType>
        <Message>An error occurred trying to read the response from the specified node.</Message>
        <Source>Elasticsearch.Net</Source>
        <StackTrace>   at Elasticsearch.Net.RequestPipeline.Sniff()</StackTrace>
    </InnerException>
    
    
    Elasticsearch.Net.PipelineException,Elasticsearch.Net,版本=6.0.0.0,区域性=中性,PublicKeyToken=96c599bbe3e70f5d
    尝试从指定节点读取响应时出错。
    Elasticsearch.Net
    在Elasticsearch.Net.RequestPipeline.Sniff()中
    
    您是否将
    嗅探连接池
    用于单节点群集?@RussCam否,我的群集有多个节点。这只是在我的本地系统中发生的事情,看起来某个进程正在阻止嗅探。您可以捕获嗅探请求的响应,并编辑问题以包含它吗?我怀疑
    publish\u address
    (或者未设置
    publish\u address
    时的第一个
    bound\u address
    )是节点无法访问的地址。@Russcan感谢您在这里帮助我,我不知道如何捕获嗅探请求,但我根据使用fiddler发现的内容在这里添加了一些其他详细信息。根据这些日志,我可以说问题不在于Elastic集群,而在于NEST\ElasticSearch.NetNEST版本6.1.0和ElasticSearch版本6.2.4。只是一个更新,我不再收到这个错误。它现在开始运转良好,没有任何变化
    <InnerException>
        <ExceptionType>Elasticsearch.Net.PipelineException, Elasticsearch.Net, Version=6.0.0.0, Culture=neutral, PublicKeyToken=96c599bbe3e70f5d</ExceptionType>
        <Message>An error occurred trying to read the response from the specified node.</Message>
        <Source>Elasticsearch.Net</Source>
        <StackTrace>   at Elasticsearch.Net.RequestPipeline.Sniff()</StackTrace>
    </InnerException>