Невозможно выполнить поиск в Elasticsearch, ошибка «Сбой состояния кластера сниффинга». - PullRequest
0 голосов
/ 03 октября 2018

Я столкнулся со странной проблемой с Elasticsearch, когда происходит сбой только API поиска с сообщением «Сбой состояния кластерного анализа».Другие API, такие как Bulk, CreateIndex и т. Д., Работают нормально.Код работает и в других системах, поэтому я уверен, что проблема только в моей локальной системе.Вот подробности:

Я использую SniffingConnectionPool для создания ElasticClient.Кластер Elastic настроен на другом компьютере, когда я работаю с установкой эластичного экземпляра на той же машине, где выполняется мой код, все снова работает нормально.

Вот трассировка стека различных объектов исключений, которые я обнаружил ввозвращенный ответ:

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)

Пожалуйста, предложите какое-то решение, по крайней мере, для дальнейшей отладки и поиска решения проблемы.

Ответ на GET / _nodes / http, settings? timeout= 2s & flat_settings = true HTTP / 1.1

{
    "_nodes": {
        "total": 2,
        "successful": 2,
        "failed": 0
    },
    "cluster_name": "elasticsearch_marvel",
    "nodes": {
        "i6Nvug3zQ5Wv5Kj-wiPCdg": {
            "name": "Wolverine",
            "transport_address": "10.10.10.10:9301",
            "host": "10.10.10.10",
            "ip": "10.10.10.10",
            "version": "6.2.4",
            "build_hash": "ccec39f",
            "roles": ["master", "data", "ingest"],
            "settings": {
                "client.type": "node",
                "cluster.name": "elasticsearch_marvel",
                "discovery.zen.minimum_master_nodes": "1",
                "discovery.zen.ping.unicast.hosts": "10.10.10.10:9300",
                "http.max_content_length": "1000mb",
                "http.port": "9201",
                "http.type.default": "netty4",
                "network.host": "10.10.10.10",
                "node.data": "true",
                "node.master": "true",
                "node.name": "Wolverine",
                "path.home": "C:\\Elasticsearch\\elasticsearch-6.2.4 - Node1",
                "path.logs": "C:\\Elasticsearch\\elasticsearch-6.2.4 - Node1\\logs",
                "transport.bind_host": "10.10.10.10",
                "transport.tcp.port": "9301",
                "transport.type.default": "netty4"
            },
            "http": {
                "bound_address": ["10.10.10.10:9201"],
                "publish_address": "10.10.10.10:9201",
                "max_content_length_in_bytes": 1048576000
            }
        },
        "Q-apZOAdTwuvR6D5kfGF2g": {
            "name": "Wolverine",
            "transport_address": "10.10.10.10:9300",
            "host": "10.10.10.10",
            "ip": "10.10.10.10",
            "version": "6.2.4",
            "build_hash": "ccec39f",
            "roles": ["master", "data", "ingest"],
            "settings": {
                "client.type": "node",
                "cluster.name": "elasticsearch_marvel",
                "discovery.zen.minimum_master_nodes": "1",
                "discovery.zen.ping.unicast.hosts": "10.10.10.10:9301",
                "http.max_content_length": "1000mb",
                "http.port": "9200",
                "http.type.default": "netty4",
                "network.host": "10.10.10.10",
                "node.data": "true",
                "node.master": "true",
                "node.name": "Wolverine",
                "path.home": "C:\\Elasticsearch\\elasticsearch-6.2.4",
                "path.logs": "C:\\Elasticsearch\\elasticsearch-6.2.4\\logs",
                "transport.bind_host": "10.10.10.10",
                "transport.tcp.port": "9300",
                "transport.type.default": "netty4"
            },
            "http": {
                "bound_address": ["10.10.10.10:9200"],
                "publish_address": "10.10.10.10:9200",
                "max_content_length_in_bytes": 1048576000
            }
        }
    }
}

Ответ от двух узлов на следующие запросы:

  1. Узел 1: POST / contentindex_636723112889619049 / _search? Scroll = 30s HTTP / 1.1
  2. Узел 2: POST / contentindex_636723112889619049 / _search? Scroll = 30 с 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>
...