2016-12-22 10 views
0

私は巨大なデータベースを持っているasp.netアプリケーションに取り組んでいます。私は弾性検索を実装したい。ここでコードで行ったことは次のとおりです。asp.net mvcの弾性検索設定

var node = new Uri("http://localhost:9200/"); 
      var setting = new ConnectionSettings(node); 
      setting.DefaultIndex("businessuser"); 
      client = new ElasticClient(setting); 

CanadaBusinessDBEntities db = new CanadaBusinessDBEntities(); 
      client.DeleteIndex("businessuser", null); 
      var ListofBusiness = db.CanadaTables.ToList(); 
      foreach (var Business in ListofBusiness) 
      { 
       var resutl = client.Index(Business, null); 
      } 

このコードはすべてのレコードを取得し、弾性検索を使用してインデックスを作成するコンストラクタで記述されています。インデックス作成には長い時間がかかります。これが正解かどうか尋ねたいですか?私は弾性検索には新しいです。これを行うより良い方法を提案してください。

ありがとうございました。

+0

一つのオプションの下にそのように使用することができますが、JDBC接続を使用してelasticsearchするために、データベースからインデックスにデータをLogstashを使用することです。あなたのアプリケーションは検索を行うだけのままにしておきます。 – Hakunamatata

+0

私は窓をホスティングしています。このソリューションは機能しますか? –

+0

はい、それはウィンドウでも動作します。 https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html – Hakunamatata

答えて

0

NastのElasticsearchContextクラスを使用する必要があります。

private readonly ElasticsearchContext _elasticsearchContext; 
private const string ConnectionString = "http://localhost:9200"; 
private readonly IElasticsearchMappingResolver _elasticsearchMappingResolver; 


_elasticsearchMappingResolver = new ElasticsearchMappingResolver(); 
_elasticsearchContext = new ElasticsearchContext(ConnectionString, new ElasticsearchSerializerConfiguration(_elasticsearchMappingResolver,true,true)); 

削除目的のためにあなたが

public void DeleteSkill(int Id) 
     { 
      _elasticsearchContext.DeleteDocument<Tag>(Id); 
      _elasticsearchContext.SaveChanges(); 
     }