C# ElasticSearch嵌套的索引设置分析为空。如何添加自定义分析器?
我创建了一个名为“mynGram”的自定义分析器。但我无法将其添加到分析中,因为为null。使用自定义分析器创建索引的正确方法是什么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
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);