Reputation: 45
I'm pretty new to Elastic Search / NEST and need some help with how to be able to query/filter my data.
I am trying to retire data from Elastic Search using NEST. Even though I am getting the correct count of data it has not mapped to the model class correctly. Could someone help me to identify what makes went wrong this?
This is what I am getting on Elastic Search:
This is what am getting on NEST.
Code - function
public async Task<List<WebstoreOperationLogModel>> GetAllWebStoreLogs(int WebStoreId)
{
var response = await elasticClient.SearchAsync<WebstoreLogModel>(s => s
.Index("webstore-logs")
.Query(q => q.Term("WebstoreId",
WebStoreId.ToString())));
var logList = response.Documents.ToList();
return mapper.Map<List<WebstoreOperationLogModel>>(logList);
}
Model Class
public class WebstoreLogModel
{
public Guid WebstoreLogId { get; set; }
public int WebstoreId { get; set; }
public string LogMessage { get; set; }
public int LogType { get; set; }
public bool IsExceptionOccurred { get; set; }
public DateTime LogDateTime { get; set; }
}
Upvotes: 0
Views: 474
Reputation: 45
I found the solution with some research. It's solved by putting ElasticProperty attributes on the Model class.
Modified model class
[ElasticsearchType(RelationName = "webstore-logs")]
public class WebstoreLogModel
{
/// <summary>
/// Gets or sets the webstore log identifier.
/// </summary>
[Text(Name = "WebJobLogId")]
public Guid WebJobLogId { get; set; }
/// <summary>
/// Gets or sets the webstore identifier.
/// </summary>
[Number(DocValues = false, IgnoreMalformed = true, Coerce = true,Name = "WebstoreId")]
public int WebstoreId { get; set; }
/// <summary>
/// Gets or sets the log message.
/// </summary>
[Text(Name = "LogMessage")]
public string LogMessage { get; set; }
/// <summary>
/// Gets or sets the type of the log.
/// </summary>
[Number(DocValues = false, IgnoreMalformed = true, Coerce = true,Name = "LogType")]
public int LogType { get; set; }
}
}
Upvotes: 2