如何使用Elasticsearch Nest API重新创建以下索引?
下面是包含Map的索引的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"
}
}
}
}
}
下面是我的尝试:
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"))
);
文档中没有提到这方面的任何内容吗?
更新:
找到使用var index = new IndexSettings()
的this帖子
然后添加带有字符串文字json的Analysis。index.Add("analysis", @"{json});
在哪里可以找到更多像这样的例子,这是否有效?
5条答案
按热度按时间hivapdat1#
在旧版本中创建索引
如Nest Create Index Documentation中所述,您可以通过两种主要方法来完成此操作:
下面是直接将索引设置声明为Fluent Dictionary条目的方法。就像你在上面的例子中所做的一样。我在本地测试了这个方法,它产生了与上面的JSON匹配的索引设置。
请注意,NEST还包括使用强类型类创建索引设置的能力。如果我有时间的话,我会在后面发布一个例子。
使用NEST 7.x创建索引
另请注意,在NEST 7.x中删除了
CreateIndex
方法。请使用Indices.Create
代替。以下是示例。lymnna712#
如果用户使用的是NEST 2.0,.NumberOfReplicas(x).NumberOfShards(y)现在位于设置区域,因此请在设置下的lamba表达式中指定。
NEST 2.0有很多变化,并移动了一些东西,所以这些答案肯定是一个很好的起点。您可能需要为NEST 2.0更新做一些调整。
h7wcgrx33#
小例子:
x33g5p2x4#
如果有人已经迁移到NEST 2.4并有同样的问题-您需要在索引设置中定义您的自定义过滤器和分析器,如下所示:
pu3pd22g5#
对于7.X plus,您可以使用以下代码通过Shards、Replicas和Automapping创建索引: