Mik*_*nes 9 elasticsearch nest
如何使用Elasticsearch Nest API重新创建以下索引?
这是索引的json,包括映射:
{
"settings": {
"analysis": {
"filter": {
"trigrams_filter": {
"type": "ngram",
"min_gram": 3,
"max_gram": 3
}
},
"analyzer": {
"trigrams": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"trigrams_filter"
]
}
}
}
},
"mappings": {
"data": {
"_all" : {"enabled" : true},
"properties": {
"text": {
"type": "string",
"analyzer": "trigrams"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的尝试:
var newIndex = client.CreateIndexAsync(indexName, index => index
.NumberOfReplicas(replicas)
.NumberOfShards(shards)
.Settings(settings => settings
.Add("merge.policy.merge_factor", "10")
.Add("search.slowlog.threshold.fetch.warn", "1s")
.Add("mapping.allow_type_wrapper", true))
.AddMapping<Object>(mapping => mapping
.IndexAnalyzer("trigram")
.Type("string"))
);
Run Code Online (Sandbox Code Playgroud)
文档中没有提到任何相关内容?
更新:
发现这篇文章使用
var index = new IndexSettings()
然后使用字符串文字json添加Analysis.
index.Add("analysis", @"{json});
哪里可以找到更多像这样的例子,这有用吗?
Pai*_*ook 11
有两种主要方法可以实现这一点,如Nest Create Index Documentation中所述:
以下是将索引设置直接声明为Fluent Dictionary条目的方法.就像你在上面的例子中所做的那样.我在本地测试了它,它产生的索引设置与上面的JSON相匹配.
var response = client.CreateIndex(indexName, s => s
.NumberOfReplicas(replicas)
.NumberOfShards(shards)
.Settings(settings => settings
.Add("merge.policy.merge_factor", "10")
.Add("search.slowlog.threshold.fetch.warn", "1s")
.Add("mapping.allow_type_wrapper", true)
.Add("analysis.filter.trigrams_filter.type", "nGram")
.Add("analysis.filter.trigrams_filter.min_gram", "3")
.Add("analysis.filter.trigrams_filter.max_gram", "3")
.Add("analysis.analyzer.trigrams.type", "custom")
.Add("analysis.analyzer.trigrams.tokenizer", "standard")
.Add("analysis.analyzer.trigrams.filter.0", "lowercase")
.Add("analysis.analyzer.trigrams.filter.1", "trigrams_filter")
)
.AddMapping<Object>(mapping => mapping
.Type("data")
.AllField(af => af.Enabled())
.Properties(prop => prop
.String(sprop => sprop
.Name("text")
.IndexAnalyzer("trigrams")
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
请注意,NEST还包括使用强类型类创建索引设置的功能.如果我有时间完成它,我稍后会发布一个例子.
希望这可以帮助.
Dal*_*ham 10
如果人们有NEST 2.0,则.NumberOfReplicas(x).NumberOfShards(y)现在位于"设置"区域中,因此在"设置"下的lamba表达式中指定.
EsClient.CreateIndex("indexname", c => c
.Settings(s => s
.NumberOfReplicas(replicasNr)
.NumberOfShards(shardsNr)
)
Run Code Online (Sandbox Code Playgroud)
NEST 2.0有很多变化,并且稍微改变了一些东西,所以这些答案肯定是一个很好的起点.您可能需要针对NEST 2.0更新进行一些调整.
归档时间: |
|
查看次数: |
9346 次 |
最近记录: |