Elasticsearch создание индекса с пользовательским анализатором с помощью NEST C#

323
03 октября 2017, 03:09

Доброго времени суток.

С Elasticsearch совсем незнаком и нужно сделать поиск по полю, который ищет точное вхождение строки, разбивая предложение на токены только при встрече символа пробела, как анализатор из ES - whitespace, только без учета регистра символов.

Сначала прописал анализатор в ES, но при создании индекса через C# он не виден.

[ElasticProperty(Analyzer = "my_analyzer")]
public string Username { get; set; }

Если вместо "my_analyzer" прописать "whitespace", то все работает, но проблема в том, что здесь учитывается регистр символов, что мне не нужно.

В C# есть код который отвечает за создание или обновление индекса (метод CreateIndex), но никак не могу сделать так, чтобы индекс создавался с пользовательским анализатором.

 public void CreateMappingTemplate<T1, T2>() 
where T1: class 
where T2: class 
{ 
TypeNameResolver r = new TypeNameResolver(_connSettings); 
string typeName = r.GetTypeNameFor(typeof(T)); // Здесть тип T, так как название темплэйта создаем от основного типа с которым работаем. 
_client.DeleteTemplate(String.Format("scan-mapping-elastic-writer-{0}", typeName)); 
_client.PutTemplate(String.Format("scan-mapping-elastic-writer-{0}", typeName), t => t 
.Template(String.Format("{0}*", typeName)) 
.AddMapping<T1>(m => m.MapFromAttributes()) 
.AddMapping<T2>(m => m.MapFromAttributes())); 
} 
private void CreateIndex(IElasticClient client, string indexName, int shardsCount = 1) 
{ 
client.CreateIndex(indexName , c => c 
.NumberOfReplicas(0) 
.NumberOfShards(shardsCount) 
.Settings(s => s 
.Add("merge.policy.merge_factor", "30") 
.Add("refresh_interval", "60s") 
.Add("routing.allocation.require.master", "true")) 
.AddMapping<T>(m => m.MapFromAttributes())); 
}

Заранее благодарен за помощь и предоставление какой-либо информации.

READ ALSO
Задача комивояжера

Задача комивояжера

Как можно реализовать алгоритм задачи комивояжера, используя очередь? Нужно найти исчерпывающим поиском в ширинуЯ понимаю как сделать это...

271
Как замутить Checkbox с DataGridView? [требует правки]

Как замутить Checkbox с DataGridView? [требует правки]

Есть WinForms программа он получат данные из БД-ки на DataGridView только при нажатии кнопки, это работает

229
C# - Не отправляется объект на сервер

C# - Не отправляется объект на сервер

За основу был взят код метанитаУ меня есть класс:

315
Простой новостной агрегатор на Android

Простой новостной агрегатор на Android

Всем привет! Есть желание сделать простой профильный агрегатор новостей под AndroidДелать планирую на C# и Xamarin

290