我在ElasticSearch中有文档
{
"uuid" : 0,
"StatusHistoryList" : [
{
"ArtWorkDate" : "2015-08-25T16:29:32.011+05:00",
"ArtworkStatus" : "ACTIVE"
}
]
}
我是通过代码添加此内容,但在添加此数组字段StatusHistoryList
时遇到问题
我是这样做的
var xb:XContentBuilder=XContentFactory.jsonBuilder().startObject()
.field("uuid",artWork.getUuid)
xb.startArray("StatusHistoryList")
for(h<-history)
{
var date=h.date.toString()
var artworkStatus=h.artworkStatus.toString
xb.startObject()
xb.field("ArtWorkDate",date)
xb.field("ArtworkStatus",artworkStatus)
xb.endObject()
}
xb.endArray()
xb.endObject()
val bulkRequest=client.prepareBulk()
bulkRequest.add(client.prepareIndex("arteciatedb","artWork",artWork.uuid.toString())
.setSource(xb)
)
val bulkResponse =bulkRequest.execute().actionGet()
if(bulkResponse.hasFailures())
{
log.error("something is wrong here ")
}}
在控制台上正在打印something is wrong here
请帮助我,我做错了
更新 在 Nimo 的答案之后,这是在控制台上打印的输出
controller ERROR - failed to executefailure in bulk execution:
[0]: index [arteciatedb], type [artWork], id [0], message [MapperParsingException[failed to parse [StatusHistoryList]]; nested: ElasticsearchIllegalArgumentException[unknown property [ArtWorkDate]]; ]
答案 0 :(得分:1)
要查看你做错了什么:
var xb:XContentBuilder=XContentFactory.jsonBuilder().startObject()
.field("uuid",artWork.getUuid)
xb.startArray("StatusHistoryList")
for(h<-history)
{
var date=h.date.toString()
var artworkStatus=h.artworkStatus.toString
xb.startObject()
xb.field("ArtWorkDate",date)
xb.field("ArtworkStatus",artworkStatus)
xb.endObject()
}
xb.endArray()
xb.endObject()
val bulkRequest=client.prepareBulk()
bulkRequest.add(client.prepareIndex("arteciatedb","artWork",artWork.uuid.toString()).setSource(xb))
try {
BulkResponse response=currentRequest.execute().actionGet();
if (response.hasFailures()) {
logger.error("failed to execute" + response.buildFailureMessage()); }
} catch ( Exception e) {
logger.error("Failed to process bulk",e);
}
}
现在错误日志会更准确,你可以从那里了解错误。