Я получаю следующую ошибку при подключении к кластеру ES с помощью SniffingConnectionPool в C#.
При анализе значения обнаружен неожиданный символ: [. Путь 'nodes.ZfZk0Y0PQWqg_dkfJZ9DSg.settings [' discovery.zen.ping.unicast.hosts ']', строка 1, позиция 439.
Это явно связано с синтаксическим анализом JSON, но я не уверен, как с этим справиться. Любая помощь будет высоко оценена
Вот как я настроил свой кластер:
Master Node Config:
cluster.name: elasticsearch_marvel
node.name: "Wolverine"
node.master: true
node.data: true
network.host: 192.168.1.9
discovery.zen.ping.unicast.hosts: ["192.168.1.10:9300"]
discovery.zen.minimum_master_nodes: 1
Data Node Config:
cluster.name: elasticsearch_marvel
node.name: "Deadpool"
node.master: false
node.data: true
network.host: 192.168.1.10
discovery.zen.ping.unicast.hosts: ["192.168.1.9:9300"]
discovery.zen.minimum_master_nodes: 1
А вот как я пытаюсь подключиться к кластеру:
public ElasticClient CreateClient(IEnumerable<Uri> uris)
{
var connectionPool = new SniffingConnectionPool(uris);
var settings = new ConnectionSettings(connectionPool);
var client = new ElasticClient(settings);
return client;
}
public bool TestConnection()
{
try
{
var uris = new List<Uri>();
uris.Add(new Uri("http://192.168.1.9:9200/"));
uris.Add(new Uri("http://192.168.1.10:9200/"));
var client = CreateClient(uris);
var response = client.Ping();
return response.IsValid;
}
catch (Exception ex)
{
//Unexpected character encountered while parsing value: [. Path 'nodes.ZfZk0Y0PQWqg_dkfJZ9DSg.settings['discovery.zen.ping.unicast.hosts']', line 1, position 439.
}
}
Какую версию NEST вы используете и на какую версию Elasticsearch вы ориентируетесь?
@RussCam Я использую elasticsearch-6.2.4 и Nest v5.3.0.
Пожалуйста, используйте NEST 6.x (последняя версия 6.1.0) с Elasticsearch 6.2.4. Это не должно быть проблемой с NEST 6.x
Я наконец понял это, значение discovery.zen.ping.unicast.hosts не должно быть заключено в квадратные скобки, чтобы клиент эластичного поиска NEST работал. При изменении на discovery.zen.ping.unicast.hosts: "192.168.1.9:9300" он работает нормально. Странно, что ES работает нормально, когда 192.168.1.9:9300 заключено в ["192.168.1.9:9300"], но библиотека NEST выдает исключение сериализации JSON.