JsonReaderException为elasticsearch创建批量索引

时间:2015-11-11 17:47:37

标签: json elasticsearch json.net nest elasticsearch-net

这是我第一次尝试使用elasticsearch。我不确定如何解决下面的JsonReaderException错误。

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

导致异常错误

  

发生了'Newtonsoft.Json.JsonReaderException'类型的异常   Newtonsoft.Json.dll但未在用户代码中处理

     

其他信息:读取字符串时出错。意外的标记:   在StartObject。路径'items [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": "dev@email.ex",
        "AreaName": "Pl",
        "Department": 1,
        "Class": 1a,
        "SubClass": 0,
        "GenreName": "",
        "ArtistName": "",
        "CityName": ""
    }
]

1 个答案:

答案 0 :(得分:3)

将索引更改为全部小写解决了问题。