Официальные разработчики Nest ответили на этот вопрос в своем github, ссылка здесь.
По сути, вы используете не Func<PutMappingDescriptor<Project>, IPutMappingRequest>
, а PutMappingDescriptor<Project>
напрямую. создав новый PutMappingDescriptor<Project>
и создав оттуда свою беглую картографию.
При создании индекса ожидается ITypeMapping
, а при обновлении индекса ожидается IPutMappingRequest
, который реализует ITypeMapping
. Таким образом, вы можете удовлетворить оба, используя PutMappingDescriptor
.
Чтобы создать индекс, используйте:
``` client.CreateIndex("проекты", c => c .Mappings(ms => ms .Map(m => GetMapping()) ) );
``` где вы игнорируете m
, переданный в лямбде, и используете тот, который вы создали. Причину, по которой вы можете это сделать, можно найти в исходный код, где он создает пустой TypeMappingDescriptor для дальнейшего использования:
public MappingsDescriptor Map<T>(Func<TypeMappingDescriptor<T>, ITypeMapping> selector) where T : class =>
Assign(typeof (T), selector?.Invoke(new TypeMappingDescriptor<T>()));
Чтобы обновить сопоставление, выполните следующие действия:
client.Map(GetMapping());
12.08.2016