2016-05-24 2 views
1

Я использую NEST 2.3.1 в своем .NET Project.Ошибка при создании индекса в NEST 2.3.1 (Elastic Search)

Я новичок в этом.

Как я увидел в одном учебнике, я сделал этот код.

using System; 
using System.Collections.Generic; 
using System.Data.Linq; 
using System.Xml.Linq; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Nest; 
using Newtonsoft.Json; 
using System.Data.Entity; 

namespace Elastic_ConsoleApp 
{ 
    class Program 
    { 
     public static Uri node; 
     public static ConnectionSettings settings; 
     public static ElasticClient client; 

     static void Main(string[] args) 
     { 
      node = new Uri("http://localhost:9200"); 
      settings = new ConnectionSettings(node); 
      client = new ElasticClient(settings); 
      settings.DefaultIndex("my_blog"); 

      var indexSettings = new IndexSettings(); 
      indexSettings.NumberOfReplicas = 1; 
      indexSettings.NumberOfShards = 1; 

      client.CreateIndex(c => c 
       .Index("my_blog") 
       .InitializeUsing(indexSettings) 
       .AddMapping<Post>(m => m.MapFromAttributes())); 
     } 
    } 
} 

Но это не работает, и я получаю эту ошибку:

Error CS1660 Cannot convert lambda expression to type 'IndexName' because it is not a delegate type

на линии:

client.CreateIndex(c => c 
        .Index("my_blog") 
        .InitializeUsing(indexSettings) 
        .AddMapping<Post>(m => m.MapFromAttributes())); 

Я попытался Поиск на Google, но я только получаю Помощь для более старой версии!

Спасибо заранее.

+0

Это выглядит как NEST 1.x API, который немного отличается от NEST 2.x. Вы можете найти документацию для NEST 2.x на эластичном сайте: https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/index.html –

+0

Да! Спасибо большое! @RussCam –

ответ

2

Вы пытаетесь использовать старые методы с новым гнездом ElasticSearch. Ваш код будет работать с NEST Ver. 1.X. Обновите свой код для более новой версии или вы можете использовать более старую версию NEST.

+0

Я пробовал использовать NEST 1.x и работает. –

1
Uri node  = new Uri(ES_ADDRESS); 
var settings = new ConnectionSettings(node); 
settings.DisableDirectStreaming();//Check json 
var client  = new ElasticClient(settings); 
//Analyzers: 
CustomAnalyzer shingles = new CustomAnalyzer 
{ 
    Tokenizer = "standard", 
    Filter = new List<string>() 
    { 
    "standard", "lowercase", "shingle" 
    } 
}; 
//Settings for index: 
var mapperTemplate = new CreateIndexDescriptor(string.Format("customers")) 
    .Settings(s => s 
    .Analysis(a => a 
     .Analyzers(an => an 
     .UserDefined("analyzer_shingles", shingles) 
    ) 
    ) 
); 
var customer = mapperTemplate.Mappings(ms => ms 
    .Map<customers>(m => m 
    .AllField(a => a.Analyzer("analyzer_shingles")) 
    .AutoMap() 
) 
); 

//Create index: 
var response = client.CreateIndex(customer); 
1

с последней версией этого snipet работы:

var indexCreated = client.CreateIndex("person", 
       s => s.Mappings(ms => ms 
       .Map<Person>(m => m))); 
+0

Это работает, спасибо помощнику. – nsarchar

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