2016-05-23 4 views
1

Я новичок в Elasticsearch. Во время выполнения приложения пример, как как https://msdn.microsoft.com/en-us/magazine/dn904674.aspx, он показывает ошибку в«CreateIndexDescriptor» не содержит определения для «AddMapping»

public void CreateMarketingIndex() 
{ 
this.client.CreateIndex("marketing", c =>.AddMapping<MarketingDocument> 
    (m => m.Properties(ps => ps.Attachment 
     (a => a.Name(o => o.Document) 
     .TitleField(t => t.Name(x => x.Name).TermVector(TermVectorOption.WithPositionsOffsets)))))); 
} 

«CreateIndexDescriptor» не содержит определения для «AddMapping» и не метод расширения «AddMapping» принимать первый аргумент типа «CreateIndexDescriptor» может быть найдено (вы отсутствуете использование директивы или ссылку на сборку?)

Я отсутствует какая-либо ссылка. Я ссылаюсь на Elasticsearch.net и гнездо

+0

Не могли бы вы проверить, если код, который вы Размещенное код в файле , некоторые из них немного от примера. См. Эту строку 'c => c.AddMapping ' –

ответ

2

Я думаю, что AddMapping, возможно, был для старой версии клиента Nest. Вместо этого я использую Mappings. Попробуйте что-то вроде этого:

this.client.CreateIndex("marketing", c => c 
    .Mappings(md => md 
     .Map<MarketingDocument>(m => m.Properties(ps... 
+0

Спасибо, ваш ответ мне помог. Также у меня есть аналогичная ошибка, возникающая в var queryResult = this.client.Search (d => d.AllIndices() .AllTypes() . ** QueryString (queryTerm)); ** Можете ли вы предложить решение ? –

+0

Возможно, попробуйте что-то вроде: client.Search (d => d.AllIndices(). AllTypes(). Query (q => q.QueryString (qs => qs.Query (queryTerm)))); Первый .Query запускает часть запроса поиска. Тогда внутренний q является дескриптором контейнера запроса, с которого вы можете начать определять запрос. Поэтому я говорю, что запрос представляет собой запрос QueryString, а затем внутренний qs описывает строку запроса, с помощью которой вы можете запросить свой поисковый запрос. – coconaut

1

Вы можете сделать это следующим образом:

var descriptor = new CreateIndexDescriptor(mIndexName) 
    .Mappings(x => x.Map<Model>(m => m.AutoMap())); 

или без типа объекта

var descriptor = new CreateIndexDescriptor(mIndexName) 
    .Mappings(x => x.Map(model, m => m.AutoMap())); 

 Смежные вопросы

  • Нет связанных вопросов^_^