[英]Nest update index settings
我正在關注創建索引嵌套並嘗試更新索引設置的文章。 一切運行正常,但是html_strip
過濾器未剝離HTML。 我的代碼是
var node = new Uri(_url + ":" + _port);
var settings = new ConnectionSettings(node);
settings.SetDefaultIndex(index);
_client = new ElasticClient(settings);
//to apply filters during indexing use folding to remove diacritics and html strip to remove html
_client.UpdateSettings(
f = > f.Analysis(descriptor = > descriptor
.Analyzers(
bases = > bases
.Add("folded_word", new CustomAnalyzer
{
Filter = new List < string > { "icu_folding", "trim" },
Tokenizer = "standard"
}
)
)
.CharFilters(
cf = > cf.Add("html_strip", new HtmlStripCharFilter())
)
)
);
您遇到錯誤:
無法更新非動態設置[[index.analysis.analyzer.folded_word.filter.0,index.analysis.char_filter.html_strip.type,index.analysis.analyzer.folded_word.filter.1,index.analysis.analyzer.folded_word .type,index.analysis.analyzer.folded_word.tokenizer]]用於開放索引[[my_index]]
在嘗試更新設置之前,請先關閉索引,然后再更新設置並重新打開。 看一看。
client.CloseIndex(..);
client.UpdateSettings(..);
client.OpenIndex(..);
更新
將html_strip
字符過濾器添加到自定義分析器:
.Analysis(descriptor => descriptor
.Analyzers(bases => bases.Add("folded_word",
new CustomAnalyzer
{
Filter = new List<string> { "icu_folding", "trim" },
Tokenizer = "standard",
CharFilter = new List<string> { "html_strip" }
}))
)
現在,您可以運行測試以檢查此分析器是否返回正確的令牌:
client.Analyze(a => a.Index(indexName).Text("this <a> is a test <div>").Analyzer("folded_word"));
輸出:
this
is
a
test
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.