2016-06-14 15 views
5

私はElasticsearchにはとても新しく、知りたいのですか?NEST C#を使用してjsonドキュメントに続いてElasticsearchにインデックスとインデックスを作成する方法は? NESTとインデックスを作成するインデックスJsonドキュメントElasticsearchを使用してNEST C#

{ 
    "BookName": "Book1", 
    "ISBN": "978-3-16-148410-0", 
    "chapter" : [ 
     { 
      "chapter_name": "Chapter1", 
      "chapter_desc": "Before getting into computer programming, let us first understand computer programs and what they..." 
     }, 
     { 
      "chapter_name": "Chapter2", 
      "chapter_desc": "Today computer programs are being used in almost every field, household, agriculture, medical, entertainment, defense.." 
     }, 
     { 
      "chapter_name": "Chapter3", 
      "chapter_desc": "MS Word, MS Excel, Adobe Photoshop, Internet Explorer, Chrome, etc., are..." 
     }, 
     { 
      "chapter_name": "Chapter4", 
      "chapter_desc": "Computer programs are being used to develop graphics and special effects in movie..." 
     } 
    ] 
} 
+0

https://github.com/elastic/elasticsearch-net/issues/336 –

答えて

5

これは、ノードに対して定義された破片とレプリカのデフォルト数でインデックスを作成するような単純な

var client = new ElasticClient(); 
client.CreateIndex("index-name"); 

通りです。

インデックスにインデックスにJSONとして表現文書が

var json = @"{ 
    ""BookName"": ""Book1"", 
    ""ISBN"": ""978-3-16-148410-0"", 
    ""chapter"" : [ 
     { 
      ""chapter_name"": ""Chapter1"", 
      ""chapter_desc"": ""Before getting into computer programming, let us first understand computer programs and what they..."" 
     }, 
     { 
    ""chapter_name"": ""Chapter2"", 
      ""chapter_desc"": ""Today computer programs are being used in almost every field, household, agriculture, medical, entertainment, defense.."" 
     }, 
     { 
    ""chapter_name"": ""Chapter3"", 
      ""chapter_desc"": ""MS Word, MS Excel, Adobe Photoshop, Internet Explorer, Chrome, etc., are..."" 
     }, 
     { 
    ""chapter_name"": ""Chapter4"", 
      ""chapter_desc"": ""Computer programs are being used to develop graphics and special effects in movie..."" 
     } 
    ] 
}"; 

var indexResponse = client.LowLevel.Index<string>("index-name", "type-name", json); 

if (!indexResponse.Success) 
    Console.WriteLine(indexResponse.DebugInformation); 

ここでは、ElasticClient.LowLevelプロパティを通じてNESTで利用可能なインデックスJSON、低レベルのクライアントを使用するだろう。インデックス付きのドキュメントを検索するに

はこれがインデックスドキュメントを返し

// refresh the index so that newly indexed documents are available 
// for search without waiting for the refresh interval 
client.Refresh("index-name"); 

var searchResponse = client.Search<dynamic>(s => s 
    .Index("index-name") 
    .Type("type-name") 
    .Query(q => q 
     .Match(m => m 
      .Query("Photoshop") 
      .Field("chapter.chapter_desc") 
     ) 
    ) 
); 

だろう。 dynamicSearch<T>()で使用されるジェネリック型パラメータは、結果として得られるドキュメントがJson.Net JObjectタイプにデシリアライズされることを意味します。

インデックスを作成したときに、タイプがtype-nameのマッピングが指定されていなかったため、Elasticsearchはjsonドキュメントの構造からマッピングを推測しました。 This is dynamic mappingであり、多くの状況で役に立ちますが、送信しようとしている文書の構造がわかっていて、それが破壊的に変更されない場合は、specify a mapping for the typeです。この特定の例でこれを行う利点はの配列がobject typeのマッピングとして推測されることですが、個々の章の章名と章の説明の両方を検索する場合は、chapternested type

関連する問題