我是弹性搜索的新手,我想将它用于语音搜索,所以我使用 nougat 包在 dotnet 中添加了插件 NEST,并尝试使用语音创建索引,但出现以下错误。
ServerError = {ServerError:400Type:非法参数异常原因:“[my_metaphone]的未知过滤器类型[语音]”}
var result = client.CreateIndex("indexName", i => i
.Settings(s => s
.Analysis(a => a
.Analyzers(x => x.Custom("my_analyzer", ca => ca.Filters("standard", "lowercase", "my_metaphone")))
.TokenFilters(x => x.Phonetic("my_metaphone", pf => pf.Encoder(PhoneticEncoder.DoubleMetaphone)))
))
.Mappings(m => m
.Map<CityModel>(mm => mm
.AutoMap()
.Properties(p => p
.Text(t => t
.Name(n => n.Name)
.Analyzer("my_analyzer")
.SearchAnalyzer("my_analyzer")
)
)
)
)
);
任何人都可以帮助我在 dotnet 中使用语音配置创建索引吗?提前致谢
编辑 :
我可以使用以下 json 请求创建索引。
<pre>
PUT /indexname
{
"settings": {
"index": {
"number_of_shards" : 4,
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": ["standard","lowercase","my_metaphone"]
}
},
"filter": {
"my_metaphone": {
"type": "phonetic",
"encoder": "metaphone",
"replace": false
}
}
}
}
},
"mappings":{
"crm3":{
"properties":{
"@timestamp":{
"type":"date"
},
"@version":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"AccountCategory":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"AccountNo":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"AccountStatus":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ActivationDate":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"AnniversaryDate":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"BirthDate":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"CityName":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ContactNumbers":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"EmailIDs":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"FirstName":{
"type":"text",
"analyzer": "my_analyzer",
"search_analyzer": "my_analyzer",
"fields":{
"keyword":{
"type":"text"
}
}
},
"Gender":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"IMSINumber":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"IsBlackListed":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"LastName":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"MiddleName":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"OrganizationName":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"Segment":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"SubscriberID":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"SubscriberNo":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"SubscriberTypeName":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"host":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"message":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"path":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
}
</pre>
使用 C# linq 场景不起作用,任何人都可以指导吗?