Эластичный поиск Фонетическая проблема с NEST в Dotnet
Я новичок в поиске Elastic и хочу использовать его для фонетического поиска, поэтому я добавил плагин NEST в dotnet, используя пакет nougat, и попытался создать индекс с фонетическим, но получил следующую ошибку.
ServerError = {ServerError: 400Type: invalid_argument_exception Причина: "Неизвестный тип фильтра [фонетический] для [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? Заранее спасибо
РЕДАКТИРОВАТЬ:
Я могу создать индекс с помощью запроса ниже.
<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 не работает, может ли кто-нибудь руководствоваться тем же?
1 ответ
Проблема устранена после перезапуска экземпляра asticsearch после установки фонетического плагина. И вы можете найти, используя этот URL (localhost:9200/_nodes), как предложил Роб.