2015-11-11 111 views
2

這是我第一次嘗試使用elasticsearch。我不確定如何解決下面的JsonReaderException錯誤。JsonReaderException爲elasticsearch創建批量索引

var result = client.Bulk(d => descriptor); 

導致異常錯誤

類型「Newtonsoft.Json.JsonReaderException」發生在 Newtonsoft.Json.dll的例外,但是在用戶代碼沒有處理

附加信息:讀取字符串時出錯。意外的令牌: StartObject。路徑 '項[0] .index.error',第1行,位置108

var client = new ElasticClient(); 
client.DeleteIndex("Tracks"); 
client.CreateIndex("Tracks", c => c 
.NumberOfReplicas(1) 
.NumberOfShards(6) 
.AddMapping<vw_MusicTracks>(m => m.MapFromAttributes())); 

var descriptor = new BulkDescriptor(); 
var context = new MerchEntities(); 
var sqlTracks = context.vw_MusicTracks.ToList<vw_MusicTracks>(); 

foreach (var order in sqlTracks) 
{ 
    descriptor.Index<vw_MusicTracks>(op => op.Index("Tracks").Document(order).Type("Track").Id(order.IMUTrackId)); 
} 
    var result = client.Bulk(d => descriptor); 
Console.WriteLine("job's done"); 
Console.ReadKey(); 

vw_MusicRules.cs

using Nest; 
using System.ComponentModel.DataAnnotations; 
using System; 
using System.Collections.Generic; 
namespace MusicStore 
{ 

     [ElasticType(Name = "Track", IdProperty = "IMUTrackId")] 
    public partial class vw_MusicTracks 
    { 
      [Key] 
     public int IMUTrackId { get; set; } 
     public int IMUTrackTypeId { get; set; } 
     public int AreaId { get; set; } 
     public int GenreId { get; set; } 
     public int CityId { get; set; } 
     public int ArtistId { get; set; } 
     public System.DateTime Live { get; set; } 
     public Nullable<System.DateTime> LiveThrough { get; set; } 
     public decimal Value { get; set; } 
     public short Priority { get; set; } 
     public System.DateTime LastModified { get; set; } 
     public int LastModifierId { get; set; } 
     public System.DateTime Created { get; set; } 
     public string IMUTrackType { get; set; } 
     public string ModifierUserName { get; set; } 
     public string ModifierFirstName { get; set; } 
     public string ModifierLastName { get; set; } 
     public string ModifierEmail { get; set; } 
     public string AreaName { get; set; } 
     public Nullable<int> Department { get; set; } 
     public Nullable<int> Class { get; set; } 
     public Nullable<int> SubClass { get; set; } 
     public string Class { get; set; } 
     public string GenreName { get; set; } 
     public string ArtistName { get; set; } 
     public string CityName { get; set; } 
    } 
} 

序列化sqlTracks

[ 
    { 
     "IMUTrackId": 3, 
     "IMUTrackTypeId": 1, 
     "AreaId": 1, 
     "GenreId": -1, 
     "CityId": -1, 
     "ArtistId": -1, 
     "Live": "2014-01-01T00:00:00", 
     "LiveThrough": "2015-11-11T00:00:00", 
     "Value": 1.2195, 
     "Priority": 1, 
     "LastModified": "2014-02-25T00:00:00", 
     "LastModifierId": 218, 
     "Created": "2014-02-25T00:00:00", 
     "IMUTrackType": "Mult", 
     "ModifierUserName": "SystemUser", 
     "ModifierFirstName": "First", 
     "ModifierLastName": "", 
     "ModifierEmail": "[email protected]", 
     "AreaName": "Pl", 
     "Department": 1, 
     "Class": 1a, 
     "SubClass": 0, 
     "GenreName": "", 
     "ArtistName": "", 
     "CityName": "" 
    } 
] 

回答

3

改變索引所有小寫​​都解決了這個問題。

+0

Araaargh!謝謝。多麼愚蠢的事情。 – LoztInSpace

相關問題