Jak napisac klienta do ElasticSearch ?

0

Witam

Mam problem z napisaniem programu, który będzie generował pseudolosowo logi , które będzie wysyłał do uruchomionego serwera elasticsearch.

Na początku zrobiłem sobie pseudolosowy geneator i za pomocą TCPClienta utworzyłem polaczenie z localhost na porcie 9200 (standardowy port nasuluchiwania elasticsearch), później wysylalem pojedyncze stringi, ale to w ogole nie działa.

Doczytalem się ze muszę zainstalować paczke NEST.

wiec w VS 2013 wlazłem w menu>Tools>NuGet Package Manager > Package Manager Console.

w consoli wpisałem PM>

Install-Package NEST

i wyskoczylo to:

Attempting to resolve dependency 'Elasticsearch.Net (≥ 1.7.1)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 7.0 && < 8.0)'.
Installing 'Elasticsearch.Net 1.7.1'.
Successfully installed 'Elasticsearch.Net 1.7.1'.
Installing 'Newtonsoft.Json 7.0.1'.
Successfully installed 'Newtonsoft.Json 7.0.1'.
Installing 'NEST 1.7.1'.
Successfully installed 'NEST 1.7.1'.
Adding 'Elasticsearch.Net 1.7.1' to GeneratorLog.
Successfully added 'Elasticsearch.Net 1.7.1' to GeneratorLog.
Adding 'Newtonsoft.Json 7.0.1' to GeneratorLog.
Successfully added 'Newtonsoft.Json 7.0.1' to GeneratorLog.
Adding 'NEST 1.7.1' to GeneratorLog.
Successfully added 'NEST 1.7.1' to GeneratorLog.

PM>

Czyli paczka się zainstalowała ;-)

I teraz nie wiem jak mam to ugryźć, pierwszy raz używam VS 2013 (wcześniej VS 2008) - ale wlasnie w tamtej wersji nie moglem zainstalować paczkki NEST, a w tej wersji jak zainstalowałem to nie wiem jak tego uzywac :(

dodałem do kodu:

using Elasticsearch;
using Nest;
using Newtonsoft;
 

i pod zdarzeniem buttona zrobiłem cos takiego:

 var Polaczenie = new Uri("http://"+TextIP.Text+":"+TextPort.Text);
 var settings = new ConnectionSettings(Polaczenie, defaultIndex: "GeneratorLog-V1.0");
 var Klient = new ElasticClient(settings); 

no i teraz nie wiem jak mam się połączyć :(
może mi ktoś pomóc ?

Tak ogólnie to nie powinienem tworzyć tych zmiennych w zdarzeniu buttona, ponieważ w zdarzeniu timera chce wysyłać logi a on nie będzie miał dostępu do tutaj stworzonych zmiennych.
Natomiast jak te zmienne wpisze tutaj:

public partial class Form1 : Form
    {
      //  Uri Polaczenie = new Uri("http://127.0.0.1:9200");
      //  ConnectionSettings settings = new ConnectionSettings();
      //  ElasticClient Klient = new ElasticClient();

        int  Delay, Typ, Info, Status;
        String TypText, InfoText, SendLog;
       
        public Form1()
        {
            InitializeComponent();
        }
 

to pod zdarzeniem buttona chciałbym tylko te zmienne po uzupełniać o dane z textboxow, ale jakoś nie mogę :-( - robię jakiś głupi błąd :-(
pozdrawiam

Ultimion

0

Na pytanie odpowiadam - Tak.

0

To może po kawałku napisze.

tutaj jest link do NESTa, na którym się opierałem

http://nest.azurewebsites.net/nest/connecting.html

a tutaj mam kod pod buttonem:

 var Polaczenie = new Uri("http://"+TextIP.Text+":"+TextPort.Text);
 var settings = new ConnectionSettings(Polaczenie, defaultIndex: "GeneratorLog-V1.0");
 var Klient = new ElasticClient(settings); 

No ale z tego kawałka kodu nie wynika ze się łączę, tylko ze tworze odpowiednio obiekty, które później używam w niższych linijkach.
Ostatnim obiektem jest Klient i jest to obiekt typu ElasticClient ale nie mam kodu na polaczenie się ..... i nie wiem jak sprawdzić czy się połączyłem z ElasticSearch :-(

Co więcej jak napisałem polaczenie używając TCPClient to jak nie miałem uruchomionego serwera ElasticSearch to wywalało błąd ze nie można się połączyć a jak serwer działa w tle to się łączył, ale nie mogłem nic wysłać... później doczytałem ze musze to robić za pomocą paczki NEST.

Teraz po 1 nie wiem czy się połączyłem ... może NEST wysyła pakiety ICMP... wiec się nie musi łączyć - nie ogarniam tego :-(

Nie wspomnę ze nie doszedłem jeszcze do tego jak wysyłać dane ;-(

Napisałem sobie generator Logów do wysyłania do tego elasticSearch, ale nie wiem czy mogę wysyłać te logi w różnych interwalach czasowych (tworząc te logi w realtime) czy musze sobie wygenerować np. 100 linii logów i potem to wysłać do ElasticSearch w jednej paczce ... zakładam ze pierwsza opcja jest poprawna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1