Как установить имя документа в NEST 2.0

У меня есть Dictionary<string, object>, который вставляется в ElasticSearch 2.0 с использованием библиотеки NEST 2.0.

Имя документа по умолчанию — Dictionary'2. Я не знаю, почему NEST выбрали это имя, но я бы хотел иметь что-то более осмысленное, например "DataRecord"

Как я могу установить имя документа?

Второй вариант - создать пустой класс-оболочку, но это кажется немного излишним.


person Gianluca Ghettini    schedule 16.03.2016    source источник


Ответы (1)


Я думаю, что самый простой способ — определить имена типов по умолчанию для ConnectionSettings.

var settings = new ConnectionSettings()
    .DefaultIndex(indexName)
    .MapDefaultTypeNames(dictionary => dictionary.Add(typeof(Dictionary<string,object>), "yourTypeName"))
    .DisableDirectStreaming()
    .PrettyJson();

var client = new ElasticClient(settings);

При таком подходе вам не нужно беспокоиться о вводе имени типа всякий раз, когда вы индексируете документы или выполняете поиск.

Если вам нужно больше «контроля» над процессом, вы можете просто указать параметр типа при вызове elasticsearch, но вы должны помнить об этом параметре во всех местах.

var indexResponse = client.Index(new Dictionary<string, object>
{
    {"asd", 1}
}, descriptor => descriptor.Type("yourTypeName"));
person Rob    schedule 16.03.2016