elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# ElasticSearch嵌套的索引设置分析为空。如何添加自定义分析器?

C# ElasticSearch嵌套的索引设置分析为空。如何添加自定义分析器?,c#,elasticsearch,nest,C#,elasticsearch,Nest,我创建了一个名为“mynGram”的自定义分析器。但我无法将其添加到分析中,因为为null。使用自定义分析器创建索引的正确方法是什么 const string indexName = "taskmanager"; ConnectionSettings settings = new ConnectionSettings(new Uri("http://localhost:9200")).DefaultIndex("taskmanager").DefaultTypeNameI

我创建了一个名为“mynGram”的自定义分析器。但我无法将其添加到分析中,因为为null。使用自定义分析器创建索引的正确方法是什么

const string indexName = "taskmanager";
            ConnectionSettings settings = new ConnectionSettings(new Uri("http://localhost:9200")).DefaultIndex("taskmanager").DefaultTypeNameInferrer(t => "tasks");
            elasticClient = new ElasticClient(settings);

            IndexSettings indexSettings = new IndexSettings();

            CustomAnalyzer customAnalyzer = new CustomAnalyzer();
            customAnalyzer.CharFilter = new List<string>();
            customAnalyzer.Tokenizer = "mynGram";
            customAnalyzer.Filter = new List<string> { "lowercase" };

            // test
            // Analysis is null
            indexSettings.Analysis = new Analysis();

            // Analyzers is null
            indexSettings.Analysis.Analyzers.Add("mynGram", customAnalyzer);
            indexSettings.Analysis.Tokenizers.Add("mynGram", new NGramTokenizer { MaxGram = 10, MinGram = 2 });

            IndexState indexConfig = new IndexState
            {
                Settings = indexSettings
            };

            elasticClient.CreateIndex(indexName, i => i
                .InitializeUsing(indexConfig)
            );

使用对象初始值设定项语法,它将位于嵌套2.x和5.x中

var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var defaultIndex = "taskmanager";
var connectionSettings = new ConnectionSettings(pool)
        .DefaultIndex(defaultIndex);

var client = new ElasticClient(connectionSettings);

var customAnalyzer = new CustomAnalyzer
{
    Tokenizer = "mynGram",
    Filter = new[] { "lowercase" }
};

var createIndexRequest = new CreateIndexRequest(defaultIndex)
{
    Settings = new IndexSettings
    {
        Analysis = new Analysis
        {
            Analyzers = new Analyzers{ { "mynGram", customAnalyzer } },
            Tokenizers = new Tokenizers{ { "mynGram", new NGramTokenizer { MaxGram = 10, MinGram = 2 } } }
        }
    }
};

client.CreateIndex(createIndexRequest);

什么版本的NEST?
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var defaultIndex = "taskmanager";
var connectionSettings = new ConnectionSettings(pool)
        .DefaultIndex(defaultIndex);

var client = new ElasticClient(connectionSettings);

var customAnalyzer = new CustomAnalyzer
{
    Tokenizer = "mynGram",
    Filter = new[] { "lowercase" }
};

var createIndexRequest = new CreateIndexRequest(defaultIndex)
{
    Settings = new IndexSettings
    {
        Analysis = new Analysis
        {
            Analyzers = new Analyzers{ { "mynGram", customAnalyzer } },
            Tokenizers = new Tokenizers{ { "mynGram", new NGramTokenizer { MaxGram = 10, MinGram = 2 } } }
        }
    }
};

client.CreateIndex(createIndexRequest);