我正在使用elasticsearch 6 nest for dot.net 我使用_all字段来搜索所有索引,但现在因为它已被弃用,我需要一个新的解决方案
我找到了copy_to选项,这已经足够了。
我的问题是:我曾经为_all字段定义它应该使用哪个分析器(ngram)以及它应该使用哪个搜索分析器(空白)以用于我的项目原因。
既然我没有在映射中声明copy_to字段,我无法定义它,任何想法都会受到赞赏。
var res = client1.CreateIndex(INDEX_NAME, desc => desc
.InitializeUsing(indexState)
.Settings(x => x
.Analysis(g => g
.Tokenizers(t => t
.NGram("ngram_tokenizer", y => y
.MinGram(3)
.MaxGram(7)
.TokenChars(
TokenChar.Letter,
TokenChar.Digit,
TokenChar.Punctuation,
TokenChar.Symbol
)))
.Analyzers(o => o
.Custom("ngram_analyzer", w => w.Tokenizer("ngram_tokenizer").Filters("lowercase"))
.Whitespace("whitespace_analyzer")
.Standard("standard_analyzer", e => e.MaxTokenLength(1111)))))
.Mappings(ms => ms
.Map<SampleClass>(m => m
.AutoMap() //Still auto map exists if there are attributes on the class definition
.Properties(ps => ps //Override auto map
.Text(s => s
.Name(n => n.SampleString)
.CopyTo(am=>am.Field("searchallfield")))
.Number(s => s
.Name(n => n.SampleInteger))
.Date(s => s
.Name(n => n.SampleDateTime)
.Format("MM-DD-YY"))
))));
答案 0 :(得分:1)
显然,您可以在映射中定义copy_to字段
MyFirebaseMessagingService