private IResponse SetAnalyzers(ElasticClient client)
        {
            // close index for settings update
            var closeResult = client.CloseIndex(IndexName);
            if (!closeResult.Acknowledged)
                return closeResult;

            var request = new UpdateSettingsRequest();
            request.Index = IndexName;
            request.Analysis = new AnalysisSettings();

            request.Analysis.Analyzers.Add("cnanalyzer", new SmartCnAnalyzer());
            request.Analysis.Analyzers.Add("jpanalyzer", new KuromojiAnalyzer());

            var updateResult = client.UpdateSettings(request);
            if (!updateResult.Acknowledged)
                return updateResult;

            // reopen index
            var openresult = client.OpenIndex(IndexName);
            if (!openresult.Acknowledged)
                return openresult;
            var newSettings = client.GetIndexSettings(s => s.Index(IndexName));
            return newSettings;
        }
Exemplo n.º 2
0
        private static void CreateIndex(string name, ElasticClient client)
        {
            if (client.IndexExists(x => x.Index(name)).Exists)
            {
                Log.Logger.Information("Delete index {indexName}", name);

                client.DeleteIndex(x => x.Index(name));
            }

            Log.Logger.Information("Create index {indexName}", name);
            client.CreateIndex(name, c => c
                .NumberOfReplicas(0)
                .NumberOfShards(1)
                .AddMapping<Book>(m => m.MapFromAttributes())
                .AddMapping<CD>(m => m.MapFromAttributes()));
            Log.Logger.Information("Index {indexName} created", name);

            Log.Logger.Information("Closing index {indexName}", name);

            Thread.Sleep(30000);
            var closeRes = client.CloseIndex(x => x.Index(name));

            
            if (!closeRes.Acknowledged)
                Log.Logger.Error("Could not close index: {message}",closeRes.ServerError.Error);

            Log.Logger.Information("Add analyzer to index {indexName}", name);
            var res = client.Raw.IndicesPutSettings(name, File.ReadAllText("Analyzer.json"));

            if (!res.Success)
                Log.Logger.Error("Could not create analyzer: {error}", res.OriginalException.ToString());


            Log.Logger.Information("Open index {indexName}", name);
            client.OpenIndex(x => x.Index(name));

            RandomBooks(1000, name, client);
            RandomCDs(1000, name, client);
        }