public static ElasticClient CreateEsClient(string host, string indexName)
        {
            var uri  = new Uri(host);
            var pool = new Elasticsearch.Net.SingleNodeConnectionPool(uri);

            var transportsConnectionSettings = new Nest.ConnectionSettings(pool, new Elasticsearch.Net.HttpConnection(), new SerializerFactory((settings, values) =>
            {
                //settings.Converters.Add(new GeometryConverter());
                //settings.Converters.Add(new CoordinateConverter());
            }))
                                               .DefaultIndex(indexName)
                                               .DisableDirectStreaming();

            return(new Nest.ElasticClient(transportsConnectionSettings));
        }
Пример #2
0
        public DataAccess(ICsvReader csvReader, IConfiguration configuration)
        {
            this.csvReader     = csvReader;
            this.configuration = configuration;
            var uri  = new Uri(configuration.GetSection("Elastic").GetSection("Host").Value);
            var pool = new Elasticsearch.Net.SingleNodeConnectionPool(uri);

            var transportsConnectionSettings = new Nest.ConnectionSettings(pool, new Elasticsearch.Net.HttpConnection(), new SerializerFactory((settings, values) =>
            {
                //settings.Converters.Add(new GeometryConverter());
                //settings.Converters.Add(new CoordinateConverter());
            }))
                                               .DefaultIndex(configuration.GetSection("Elastic").GetSection("Index").Value)
                                               .DisableDirectStreaming();

            airportElasticClient = new Nest.ElasticClient(transportsConnectionSettings);
        }
Пример #3
0
        static public List<string> getMessages(long channelIDs)
        {
            List<string> messages = new List<string>();
            Uri Server_ = new Uri("http://192.168.30.106:8200/");
            var pool_DataReader = new Elasticsearch.Net.SingleNodeConnectionPool(Server_);
            CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;

            int month = DateTime.Now.Month;
            int previousMonth = DateTime.Now.AddMonths(-1).Month;
            string index = $"telegramcrw-{DateTime.Now.Year}-{month.ToString("##")}";

            Nest.ConnectionSettings connectionSettings_DataReader =                
                new Nest.ConnectionSettings(pool_DataReader).DefaultIndex(index);
            var client_DataReader = new Nest.ElasticClient(connectionSettings_DataReader);

            string minDate = DateTime.Now.AddDays(-10).ToString("yyyy-MM-dd HH:mm:ss" + ".000");
            var result = client_DataReader.Search<telegramcrw_message>(s => s
            .Type("message")
            .MatchAll()
            //.From(0)
            .Size(100)
            .Query(q => q
                .DateRange(r => r
                    .Field(f => f.createDate)
                    .GreaterThanOrEquals(minDate)
                //.LessThan("2018-12-20 19:05:00.000")
                )
                // Added without any debug
                && q.Term("language", "102097")
                && q.Term("fK_ChannelId", channelIDs)
            )
            //.Scroll("5m")
            //.SearchType(Elasticsearch.Net.SearchType.QueryThenFetch)
            .Sort(w => w.Ascending(f => f.createDate))
            );
            for (int j = 0; j < result.Documents.Count; j++)
                messages.Add(result.Documents.ElementAt(j).messageTextCleaned);

            return messages;
        }
Пример #4
0
        public static IElasticClient ConfigureElastic()
        {
            Logger.Info("Setting up Elastic");
            var connectionString = ConfigurationManager.ConnectionStrings["Elastic"];

            if (connectionString == null)
            {
                throw new ArgumentException("No elastic connection string found");
            }

            var data = connectionString.ConnectionString.Split(';');

            var url = data.FirstOrDefault(x => x.StartsWith("Url", StringComparison.CurrentCultureIgnoreCase));

            if (url == null)
            {
                throw new ArgumentException("No URL parameter in elastic connection string");
            }
            var index = data.FirstOrDefault(x => x.StartsWith("DefaultIndex", StringComparison.CurrentCultureIgnoreCase));

            if (string.IsNullOrEmpty(index))
            {
                throw new ArgumentException("No DefaultIndex parameter in elastic connection string");
            }

            index = index.Substring(13);

            var node = new Uri(url.Substring(4));
            var pool = new Elasticsearch.Net.SingleNodeConnectionPool(node);

            var regex    = new Regex("([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\\\/>< ]|[&\\|]{2}|AND|OR|NOT)", RegexOptions.Compiled);
            var settings = new Nest.ConnectionSettings(pool, (_) => new JsonNetSerializer(_))
                           .DefaultIndex(index)
                           .DefaultTypeNameInferrer(type =>
                                                    type.FullName
                                                    .Replace("Pulse.Presentation.ServiceStack.", "")
                                                    .Replace("Pulse.Application.Elastic.", "")
                                                    .Replace('.', '_')
                                                    )
                           .DefaultFieldNameInferrer(field => regex.Replace(field, ""));

#if DEBUG
            settings = settings.DisableDirectStreaming();
#endif

            var client = new ElasticClient(settings);


            if (!client.IndexExists(index).Exists)
            {
                client.CreateIndex(index, i => i
                                   .Settings(s => s
                                             .NumberOfShards(8)
                                             .NumberOfReplicas(0)
                                             .Analysis(analysis => analysis
                                                       .TokenFilters(f => f.NGram("ngram", d => d.MinGram(1).MaxGram(15)))
                                                       .Analyzers(a => a
                                                                  .Custom("default_index", t => t.Tokenizer("keyword").Filters(new[] { "standard", "lowercase", "asciifolding", "kstem", "ngram" }))
                                                                  .Custom("suffix", t => t.Tokenizer("keyword").Filters(new[] { "standard", "lowercase", "asciifolding", "reverse" }))
                                                                  )
                                                       )));
            }

            return(client);
        }
Пример #5
0
        public static IElasticClient ConfigureElastic()
        {
            Logger.Info("Setting up Elastic");
            var connectionString = ConfigurationManager.ConnectionStrings["Elastic"];
            if (connectionString == null)
                throw new ArgumentException("No elastic connection string found");

            var data = connectionString.ConnectionString.Split(';');

            var url = data.FirstOrDefault(x => x.StartsWith("Url", StringComparison.CurrentCultureIgnoreCase));
            if (url == null)
                throw new ArgumentException("No URL parameter in elastic connection string");
            var index = data.FirstOrDefault(x => x.StartsWith("DefaultIndex", StringComparison.CurrentCultureIgnoreCase));
            if (string.IsNullOrEmpty(index))
                throw new ArgumentException("No DefaultIndex parameter in elastic connection string");

            index = index.Substring(13);

            var node = new Uri(url.Substring(4));
            var pool = new Elasticsearch.Net.SingleNodeConnectionPool(node);

            var regex = new Regex("([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\\\/>< ]|[&\\|]{2}|AND|OR|NOT)", RegexOptions.Compiled);
            var settings = new Nest.ConnectionSettings(pool, (_) => new JsonNetSerializer(_))
                .DefaultIndex(index)
                .DefaultTypeNameInferrer(type =>
                        type.FullName
                        .Replace("Pulse.Presentation.ServiceStack.", "")
                        .Replace("Pulse.Application.Elastic.", "")
                        .Replace('.', '_')
                        )
                .DefaultFieldNameInferrer(field => regex.Replace(field, ""));
#if DEBUG
            settings = settings.DisableDirectStreaming();
#endif

            var client = new ElasticClient(settings);


            if (!client.IndexExists(index).Exists)
                client.CreateIndex(index, i => i
                    .Settings(s => s
                        .NumberOfShards(8)
                        .NumberOfReplicas(0)
                        .Analysis(analysis => analysis
                        .TokenFilters(f => f.NGram("ngram", d => d.MinGram(1).MaxGram(15)))
                        .Analyzers(a => a
                            .Custom("default_index", t => t.Tokenizer("keyword").Filters(new[] { "standard", "lowercase", "asciifolding", "kstem", "ngram" }))
                            .Custom("suffix", t => t.Tokenizer("keyword").Filters(new[] { "standard", "lowercase", "asciifolding", "reverse" }))
                        )
                    )));

            return client;
        }